Witam serdecznie,
Rozpoczynam pracę z WebAPI Allegro wykorzystując Delphi7.
Prześledziłam wskazówki dostępne w internecie, ale nadal mam problem z połączeniem. Będę bardzo wdzięczna za każdą uwagę.
Oto co udało mi się zrobić:
- UZYSKANIE KLUCZA WEBAPI
- IMPORTOWANIE PLIKU WSDL (NOWY/OTHER/WebService/WSDL IMPORTER)
- EDYCJA UPLOADER.PAS (wywołanie procedury w 2 częściach - usunięcie błędu długości)
- DOŁĄCZENIE UPLOADER.PAS DO PROJEKTU (uploader.pas w uses)
- ZMIANY W PLIKU SOAP (kwestia myślników i podkreśleń):
W pliku borland/src/soap/OPToSoapDomConv.pas, w linii 971 (w zależności od wersji) jest:
if MD.Params[J].Name = ExtractLocalName(Node.NodeName) then
powinno być:
if StringReplace(MD.Params[J].Name,'_', '', [rfReplaceAll]) = StringReplace(ExtractLocalName(Node.NodeName), '-', '', [rfReplaceAll]) then
- BRAK ZMIANY W PLIKU SOAP (nie podmieniłam, nie mam tego w źródle):
w tym samym pliku, w okolicach linii 2300 odnaleźć należy:
if SameText(InternalName, PropList[I].Name) then
i zamienić na:
if StringReplace(InternalName, , , [rfReplaceAll]) = StringReplace(PropList[I].Name, '_', '', [rfReplaceAll]) then
- INSTALOWANIE KOMPONENTU DCPCRYPT2 I UPDATE DO SZYFROWANIA SHA256
- WYKORZYSTANIE IdEncoderMIME1 DO SZYFROWANIA BASE64
- DODANIE KOMPONENTU HTTPRIO1 NA FORMĘ
WSDLLocation => https://webapi.allegro.pl/uploader.php?wsdl
Port => AllegroWebApiPort
Service => AllegroWebApiService
I dotąd było gładko. A teraz kwiatki:
- "interface not supported" dla:
procedure TForm3.Button1Click(Sender: TObject);
var
IDusera : integer;
begin
IDusera := (HTTPRIO1 as allegrowebapiporttype).doGetUserID(1,'','lo','ha') ;
showmessage (inttostr(IDUsera));
end;
- "IOHandler value is not valid" dla:
procedure TForm3.Button2Click(Sender: TObject);
begin
// wysyłane są zmienne globalne
doLoginEncRequest := TStringStream.Create('');
doLoginEncResponse := TStringStream.Create('');
doLoginEncRequest.WriteString('user-login='+user_login+'&user-password='+hasloszyfr+'&country-code='+inttostr(country_code)+'&webapi-key='+webapi_key+'&local-version='+local_version);
Memo4.Text:=doLoginEncRequest.DataString; //wyświetla
IdHTTP1.Request.contenttype:='application/x-www-form-urlencoded';
IdHTTP1.Post('https://webapi.allegro.pl/uploader.php?wsdl', doLoginEncRequest, doLoginEncResponse);
Memo3.Text:=doLoginEncResponse.DataString; //nic nie wyświetla
doLoginEncRequest.Free;
doLoginEncResponse.Free;
Z góry dziękuję każdemu, kto pomoże mi ruszyć z miejsca.
Pozdrawiam