Thread View: pl.comp.lang.perl
12 messages
12 total messages
Started by Giz
Tue, 03 Jan 2012 10:56
Allegro WebAPI - czy komus się udało?
Author: Giz
Date: Tue, 03 Jan 2012 10:56
Date: Tue, 03 Jan 2012 10:56
26 lines
1652 bytes
1652 bytes
Witam,
Czy komuś się udało zrealizować wymianę danych z Allegro WebAPI w perlu?
Mi się udało tylko wywoływać metody które wymagają na wejściu podstawowe
typy danych
jak doLogin lub doGetCountries
use SOAP::Lite +trace => qw( debug );
my $soap =
SOAP::Lite->service("http://webapi.allegro.pl/uploader.php?wsdl");
my @odp = $soap->doGetCountries(228,'mojwebkey');
Jednak próbując z metodą doNewAuctionExt parametry wejściwe to
doNewAuctionExt(string, ArrayOfFieldsValue[], int, int)
i tu pojawia się problem.
Nie mam pojęcia jak przekazać prawidłowo tablice jako parametr, próbowałem
już na różne sposoby
ale zawsze w podglądzie generowanego soap jest pusty ciąg
<fields xsi:nil="true" xsi:type="typens:ArrayOfFieldsValue" />
Czy komuś udało się to przeskoczyć?
Pozdr
G.
Re: Allegro WebAPI - czy komus się udało?
Author: Stachu 'Dozzie' K.
Date: Tue, 03 Jan 2012 11:01
Date: Tue, 03 Jan 2012 11:01
30 lines
2169 bytes
2169 bytes
On 2012-01-03, Giz <giz@nospam.pl> wrote:
> Witam,
>
> Czy komuś się udało zrealizować wymianę danych z Allegro WebAPI w perlu?
>
> Mi się udało tylko wywoływać metody które wymagają na wejściu podstawowe
> typy danych
> jak doLogin lub doGetCountries
>
> use SOAP::Lite +trace => qw( debug );
> my $soap =
> SOAP::Lite->service("http://webapi.allegro.pl/uploader.php?wsdl");
> my @odp = $soap->doGetCountries(228,'mojwebkey');
>
> Jednak próbując z metodą doNewAuctionExt parametry wejściwe to
> doNewAuctionExt(string, ArrayOfFieldsValue[], int, int)
> i tu pojawia się problem.
> Nie mam pojęcia jak przekazać prawidłowo tablice jako parametr, próbowałem
> już na różne sposoby
> ale zawsze w podglądzie generowanego soap jest pusty ciąg
>
><fields xsi:nil="true" xsi:type="typens:ArrayOfFieldsValue" />
>
> Czy komuś udało się to przeskoczyć?
A jakimi sposobami próbowałeś przekazać tę tablicę?
--
Secunia non olet.
Stanislaw Klekot
Re: Allegro WebAPI - czy komus się udało?
Author: Giz
Date: Tue, 03 Jan 2012 11:22
Date: Tue, 03 Jan 2012 11:22
31 lines
1917 bytes
1917 bytes
> A jakimi sposobami próbowałeś przekazać tę tablicę?
> Secunia non olet.
> Stanislaw Klekot
Chociażby tak:
my @msg=( 'fid' => 1,
'fvalue-string' => 'Aukcja testowa',
'fvalue-int' => 0,
'fvalue-float' => 0,
'fvalue-image' => 0,
'fvalue-datetime' => 0,
'fvalue-date' => '',
'fvalue-range-int' => (
'fvalue-range-int-min' => 0,
'fvalue-range-int-max' => 0),
'fvalue-range-float' => (
'fvalue-range-float-min' => 0,
'fvalue-range-float-max' => 0),
'fvalue-range-date' => (
'fvalue-range-date-min' => '',
'fvalue-range-date-max' => '')
);
my @odp = $soap->doNewAuctionExt($sesja,@msg,0,0);
ale próbowałem też na różne inne sposoby ale bez efektów.
Najgorsze jest to że w necie nie ma żadnych śladów aby komukolwiek to się
udało zrobić w perlu jeśli chodzi o Allegro WebAPI
Pozdr
G
Re: Allegro WebAPI - czy komus się udało?
Author: Stachu 'Dozzie' K.
Date: Tue, 03 Jan 2012 11:32
Date: Tue, 03 Jan 2012 11:32
34 lines
2286 bytes
2286 bytes
On 2012-01-03, Giz <giz@nospam.pl> wrote: >> A jakimi sposobami próbowałeś przekazać tę tablicę? > Chociażby tak: > > my @msg=( 'fid' => 1, [...] > 'fvalue-date' => '', > 'fvalue-range-int' => ( > 'fvalue-range-int-min' => 0, > 'fvalue-range-int-max' => 0), > 'fvalue-range-float' => ( > 'fvalue-range-float-min' => 0, > 'fvalue-range-float-max' => 0), > 'fvalue-range-date' => ( > 'fvalue-range-date-min' => '', > 'fvalue-range-date-max' => '') > ); > > my @odp = $soap->doNewAuctionExt($sesja,@msg,0,0); > ale próbowałem też na różne inne sposoby ale bez efektów. Ah so. Trzeba było od razu mówić, że nie umiesz się posługiwać strukturami złożonymi w Perlu. perldoc perllol perldoc Data::Dumper > Najgorsze jest to że w necie nie ma żadnych śladów aby komukolwiek to się > udało zrobić w perlu jeśli chodzi o Allegro WebAPI -- Secunia non olet. Stanislaw Klekot
Re: Allegro WebAPI - czy komus się udało?
Author: Giz
Date: Tue, 03 Jan 2012 11:59
Date: Tue, 03 Jan 2012 11:59
15 lines
1468 bytes
1468 bytes
> Ah so. Trzeba było od razu mówić, że nie umiesz się posługiwać > strukturami złożonymi w Perlu. > perldoc perllol > perldoc Data::Dumper Dzięki ale niestety to mi nic nie daje, juz tam zaglądałem i próbowałem w różny sposób tworzyć tablice ale zawsze bez rezultatu. Ponawiam więc pytanie czy komus się już udało stworzyc prawidłową tablicę dla metod które wymagają jako jeden z parametrów typ ArrayOfFieldsValue[] i mógłby zapodać przykład? Pozdr G.
Re: Allegro WebAPI - czy komus się udało?
Author: wozniak grzegorz
Date: Tue, 03 Jan 2012 12:02
Date: Tue, 03 Jan 2012 12:02
7 lines
1195 bytes
1195 bytes
Giz wrote: > my @odp = $soap->doNewAuctionExt($sesja,@msg,0,0); > ale próbowałem też na różne inne sposoby ale bez efektów. mała podpowiedź: referencja ;) -- Pozdrawiam
Re: Allegro WebAPI - czy komus się udało?
Author: Stachu 'Dozzie' K.
Date: Tue, 03 Jan 2012 12:14
Date: Tue, 03 Jan 2012 12:14
25 lines
2061 bytes
2061 bytes
On 2012-01-03, Giz <giz@nospam.pl> wrote:
>> Ah so. Trzeba było od razu mówić, że nie umiesz się posługiwać
>> strukturami złożonymi w Perlu.
>> perldoc perllol
>> perldoc Data::Dumper
>
> Dzięki ale niestety to mi nic nie daje, juz tam zaglądałem
> i próbowałem w różny sposób tworzyć tablice ale zawsze bez rezultatu.
Przepraszam, ale bez zrozumienia jak działają struktury złożone nie uda
ci się dobrać do API Allegro. A że nie rozumiesz, to widać z daleka po
konstrukcji
#v+
my @msg=(
'fvalue-range-int' => (
'fvalue-range-int-min' => 0,
'fvalue-range-int-max' => 0),
);
#v-
Nawet nie sprawdziłeś, jak wygląda taka tablica po przypisaniu.
--
Secunia non olet.
Stanislaw Klekot
Re: Allegro WebAPI - czy komus się udało?
Author: wozniak grzegorz
Date: Tue, 03 Jan 2012 12:28
Date: Tue, 03 Jan 2012 12:28
31 lines
2021 bytes
2021 bytes
Giz wrote: > my @msg=( 'fid' => 1, > 'fvalue-string' => 'Aukcja testowa', > 'fvalue-int' => 0, > 'fvalue-float' => 0, > 'fvalue-image' => 0, > 'fvalue-datetime' => 0, > 'fvalue-date' => '', > 'fvalue-range-int' => ( > 'fvalue-range-int-min' => 0, > 'fvalue-range-int-max' => 0), > 'fvalue-range-float' => ( > 'fvalue-range-float-min' => 0, > 'fvalue-range-float-max' => 0), > 'fvalue-range-date' => ( > 'fvalue-range-date-min' => '', > 'fvalue-range-date-max' => '') > ); > > my @odp = $soap->doNewAuctionExt($sesja,@msg,0,0); jak widzisz funkcja przyjmuje 4 parametry a ty tworząc tablice jak wyżej i podajac ją bezpośrednio w funkcji przekazujesz ich do funkcji... nie chce mi się liczyć :P jak napisałem referencja czyli takie wywołanie: my @odp = $soap->doNewAuctionExt($sesja,\@msg,0,0); to samo tyczy się zawartości @msg. Tu masz to przedstawione dość przystępnie: http://www.cs.cf.ac.uk/Dave/PERL/node63.html#SECTION00940000000000000000 -- Pozdrawiam
Re: Allegro WebAPI - czy komus się udało?
Author: Giz
Date: Tue, 03 Jan 2012 13:50
Date: Tue, 03 Jan 2012 13:50
52 lines
3260 bytes
3260 bytes
> Przepraszam, ale bez zrozumienia jak działają struktury złożone nie uda
> ci się dobrać do API Allegro. A że nie rozumiesz, to widać z daleka po
> konstrukcji
> Nawet nie sprawdziłeś, jak wygląda taka tablica po przypisaniu.
ok stworzylem już prawdopodobnie dobrą strukturę ale to i tak nie działa.
XML nadal nie jest tworzony w oparciu o tę tablice.
Przydałby się jakiś działający przykład w perlu.
@fields =
(
{'man' => {
'fie1'=>
{'fid' => 1,
'fvalue-string' => 'Aukcja testowa',
'fvalue-int' => 0,
'fvalue-float' => 0,
'fvalue-image' => 0,
'fvalue-datetime' => 0,
'fvalue-date' => '',
'fvalue-range-int' => {
'fvalue-range-int-min' => 0,
'fvalue-range-int-max' => 0},
'fvalue-range-float' => {
'fvalue-range-float-min' => 0,
'fvalue-range-float-max' => 0},
'fvalue-range-date' => {
'fvalue-range-date-min' => '',
'fvalue-range-date-max' => ''}
},
'fie2'=>
{'fid' => 2,
'fvalue-string' => 'Aukcja testowa',
'fvalue-int' => 0,
'fvalue-float' => 0,
'fvalue-image' => 0,
'fvalue-datetime' => 0,
'fvalue-date' => '',
'fvalue-range-int' => {
'fvalue-range-int-min' => 0,
'fvalue-range-int-max' => 0},
'fvalue-range-float' => {
'fvalue-range-float-min' => 0,
'fvalue-range-float-max' => 0},
'fvalue-range-date' => {
'fvalue-range-date-min' => '',
'fvalue-range-date-max' => ''}
}
}
}
);
Re: Allegro WebAPI - czy komus się udało?
Author: Giz
Date: Tue, 03 Jan 2012 13:55
Date: Tue, 03 Jan 2012 13:55
17 lines
1559 bytes
1559 bytes
> jak napisałem referencja czyli takie wywołanie: > my @odp = $soap->doNewAuctionExt($sesja,\@msg,0,0); > to samo tyczy się zawartości @msg. > Tu masz to przedstawione dość przystępnie: > http://www.cs.cf.ac.uk/Dave/PERL/node63.html#SECTION00940000000000000000 ok dzięki Dużo mi to wyjaśniło. Stworzyłem już tablicę i być może parametry dobrze przekazuje ale teraz kwestia aby tę tablicę dobrze zinterpetował SOAP::Lite a to narazie nie następuje. Tworzy się xml z pustą wartością <fields xsi:nil="true" xsi:type="typens:ArrayOfFieldsValue" /> Pozdr G
Re: Allegro WebAPI - czy komus się udało?
Author: Giz
Date: Wed, 11 Jan 2012 08:12
Date: Wed, 11 Jan 2012 08:12
58 lines
2764 bytes
2764 bytes
> Czy komuś udało się to przeskoczyć?
Jako że nikomu się nie udało stworzyć komunikacji SOAP w perlu z
AllegroWebApi lub stworzył ale siedzi cicho.
Wnioskuje to z tego że na grupach są tylko same pytania bez konkretnych
odpowiedzi, także na forum WebApi na Allegro.
Wklejam tu swoje rozwiązanie.
Stety lub niestety musiałem skorzystać z kodu php który łączy się z
AllegroWebApi.
Na szczęście w php musiałem zrobić tylko mały skrypcik a główna część jest
nadal w perlu.
W skrócie wygląda to tak:
W perlu zrobiona jest cała obsługa która gdy potrzebuje wywołąć jakąś
funckcję z AllegroWebApi to tworzę xml
który wysyłany jest do skryptu w php.
Skrypt w php ma za zadanie zamienić xml na Array i wysłać do Allegro.
Odpowiedź ponownie trafia do skryptu w perlu.
Wywołanie skryptu z poniomu perl wygląda tak:
my $res= `./SOAP.php \"$xml\"`; # w $res mamy odpowiedź z allegro
natomiast sam skrypt SOAP.php to:
<?php
require_once 'nusoap.php';
require_once "class.xmltoarray.php";
// skrypt oczekuje tylko jednego parametru w ktorym bedzie xml
if(empty($argv[1])) {exit;}
$xml=$argv[1];
// zaczynamy przerabiac xml na array
// funkcje xmlToArray znalazlem w necie i lekko
// przerobiłem na własne potrzeby
// Takich funkcji jest w necie sporo, wystarczy poszukac i dostosowac
$xmlObj = new XmlToArray($xml);
$array = $xmlObj->createArray();
$metoda=$array["xml"]["metoda"]; // moj xml zawiera tez info o
wywolywanej metodzie
$msg=$array["xml"]["dane"]; // tu wydzielam same dane z xml
$client = new SoapClient('http://webapi.allegro.pl/uploader.php?wsdl',
true);
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false;
$response = $client->call("$metoda", $msg);
print_r($response);
?>
Pozdr
G
Re: Allegro WebAPI - czy komus się udało?
Author: wozniak grzegorz
Date: Mon, 16 Jan 2012 22:58
Date: Mon, 16 Jan 2012 22:58
100 lines
4559 bytes
4559 bytes
Giz wrote:
>> Czy komuś udało się to przeskoczyć?
>
>
> Jako że nikomu się nie udało stworzyć komunikacji SOAP w perlu z
> AllegroWebApi lub stworzył ale siedzi cicho.
> Wnioskuje to z tego że na grupach są tylko same pytania bez konkretnych
> odpowiedzi, także na forum WebApi na Allegro.
> Wklejam tu swoje rozwiązanie.
Dobrze że je zamieściłeś, co pobudziło mnie do zgłębienia tematu :)
#!/usr/bin/perl
use strict;
use warnings;
use SOAP::Lite +trace=>qw(debug);
sub create_range_int {
my $fval_min_int=SOAP::Data->name("fvalue-range-int-min")->value(0);
my $fval_max_int=SOAP::Data->name("fvalue-range-int-max")->value(0);
my $ret=SOAP::Data->name("fvalue-range-date")->value($fval_min_int
$fval_max_int);
return \$ret;
}
sub create_range_float {
my
$fval_min_float=SOAP::Data->name("fvalue-range-float-min")->value(0);
my
$fval_max_float=SOAP::Data->name("fvalue-range-float-max")->value(0);
my
$ret=SOAP::Data->name("fvalue-range-float")->value($fval_min_float
$fval_max_float);
return \$ret;
}
sub create_range_date {
my
$fval_min_date=SOAP::Data->name("fvalue-range-date-min")->value('');
my
$fval_max_date=SOAP::Data->name("fvalue-range-date-max")->value('');
my $ret=SOAP::Data->name("fvalue-renge-date")->value($fval_min_date
$fval_max_date);
return \$ret;
}
sub create_field {
my (%params)=@_;
my @values=(
SOAP::Data->new(name=>"fid",value=>$params{fid}),
SOAP::Data->new(name=>"fvalue-string",value=>defined($params{fvalue_string})
$params{fvalue_string}:''),
SOAP::Data->new(name=>"fvalue-int",value=>defined($params{fvalue_int})
$params{fvalue_int}:0),
SOAP::Data->new(name=>"fvalue-float",value=>defined($params{fvalue_float})
$params{fvalue_float}:0),
SOAP::Data->new(name=>"fvalue-image",value=>defined($params{fvalue_image})
$params{fvalue_image}:0),
SOAP::Data->new(name=>"fvalue-datetime",value=>defined($params{fvalue_datetime})
$params{fvalue_datetime}:0),
SOAP::Data->new(name=>"fvalue-date",value=>defined($params{fvalue_date})
$params{fvalue_date}:''),
create_range_int,
create_range_float,
create_range_date,
);
my $ret=SOAP::Data->value(@values);
return \$ret;
}
my $soap=SOAP::Lite->proxy("http://webapi.allegro.pl/uploader.php");
my $method=SOAP::Data->name('doCheckNewAuctionExt');
my $session="bla_bla_228";
my $ses=SOAP::Data->name('session-handle')->value($session);
my $fields=SOAP::Data->name('fields')->value(\SOAP::Data->value(
create_field(fid=>1,fvalue_string=>"testowa2"),
create_field(fid=>2,fvalue_int=>1840),
create_field(fid=>4,fvalue_int=>2),
create_field(fid=>5,fvalue_int=>2),
create_field(fid=>8,fvalue_float=>100),
create_field(fid=>9,fvalue_int=>228),
create_field(fid=>10,fvalue_int=>213),
create_field(fid=>11,fvalue_string=>"NibyMaisto"),
create_field(fid=>12,fvalue_int=>1),
create_field(fid=>14,fvalue_int=>1),
create_field(fid=>24,fvalue_string=>"test opis"),
create_field(fid=>32,fvalue_string=>"25-944"),
create_field(fid=>36,fvalue_float=>15.99),
));
my $result=$soap->call($method,$ses,$fields);
--
Pozdrawiam
Grzegorz Woźniak
xmpp:skinek_at_jabster_pl
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads