🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #346936

Re: WSDL dla kuriera DPD - co robię źle?

#346936
From: zpksoft
Date: Tue, 19 Mar 2019 08:25
145 lines
4979 bytes
W dniu poniedziałek, 18 marca 2019 12:56:14 UTC+1 użytkownik MKi napisał:
> Witajcie,
> przyszło mi napisać obsługę webservice klienta DPD.
> 
> Niestety pierwsze podejście i od razu problem, którego nie
> potrafię przeskoczyć.
> 
> Na razie działam w sandboksie, oczywiście.
> 
> Utworzyłem w Delphi nowy projekt, zaimportowałem WSDL:
> https://dpdservicesdemo.dpd.com.pl/DPDPackageObjServicesService/DPDPackageObjServices?WSDL
> 
> Wygenerował się plik DPDPackageObjServices1.pas
> 
> Napisałem krótki programik (na formie jest button i HTTPRIO),
> na koniec tekstu załączam go w całości. Efektem działania
> jest wyjątek przy wywołaniu findPostalCodeV1 z komunikatem
> "Auth is null". Według dokumentacji ten komunikat pojawia się,
> gdy nie jest w ogóle wypełniona struktura autoryzacji.
> 
> Bardzo podobnie wyglądający przykład PHP zamieszczony z dokumentacją
> działa bez problemu.
> 
> Nie bardzo wiem, gdzie szukać błędu.
> 
> ----------------------------------------------------
> 
> Działający przykład PHP:
> 
> 
> <?php
> 
> class PostalCodeV1
> {
>      public $countryCode;
>      public $zipCode;
> }
> 
> class AuthDataV1
> {
>      public $login;
>      public $masterFid;
>      public $password;
> }
> 
> $clientOBJ = new 
> SoapClient("https://dpdservicesdemo.dpd.com.pl/DPDPackageObjServicesService/DPDPackageObjServices?WSDL",array('features' 
> => SOAP_SINGLE_ELEMENT_ARRAYS));
> 
> $authData = new AuthDataV1();
> $authData->login = "test";
> $authData->masterFid = "1234";
> $authData->password = "thetu4Ee";
> 
> echo "Wyszukiwanie kodu pocztowego \n";
> $param16 = new stdClass();
> $postalCodeV1 = new PostalCodeV1();
> $postalCodeV1->countryCode = 'PL';
> $postalCodeV1->zipCode = '02274';
> $param16->postalCodeV1 = $postalCodeV1;
> $param16->authDataV1 = $authData;
> $result = $clientOBJ->findPostalCodeV1($param16);
> echo "Status operacji wyszukiwanie kodu pocztowego: " . 
> $result->return->status . "";
> ?>
> 
> -------------------------------------------------------------------
> 
> Mój program:
> 
> 
> unit Udpd;
> 
> interface
> 
> uses
>    DPDPackageObjServices1,
>    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
> Forms,
>    Dialogs, InvokeRegistry, Rio, SOAPHTTPClient, StdCtrls;
> 
> type
>    TForm1 = class(TForm)
>      HTTPRIO1: THTTPRIO;
>      bTest: TButton;
>      procedure FormCreate(Sender: TObject);
>      procedure bTestClick(Sender: TObject);
>      procedure FormDestroy(Sender: TObject);
>    private
>      { Private declarations }
>      dpos : DPDPackageObjServices ;
>    public
>      { Public declarations }
>    end;
> 
> var
>    Form1: TForm1;
> 
> implementation
> 
> {$R *.dfm}
> 
> procedure TForm1.bTestClick(Sender: TObject);
> var
>    pc : postalCodeV1 ;
>    ad : authDataV1 ;
>    x : findPostalCodeResponseV1 ;
> begin
>    pc := postalCodeV1.Create ;
>    pc.countryCode := 'PL' ;
>    pc.zipCode := '02274' ;
>    ad := authDataV1.Create ;
>    ad.login := 'test' ;
>    ad.masterFid := 1495 ;
>    ad.password := 'thetu4Ee' ;
>    x := dpos.findPostalCodeV1(pc,ad) ;
>    ShowMessage(x.status) ;
>    pc.Free ;
>    ad.Free ;
> end;
> 
> procedure TForm1.FormCreate(Sender: TObject);
> begin
>    dpos := GetDPDPackageObjServices(False,'',HTTPRIO1) ;
> end;
> 
> procedure TForm1.FormDestroy(Sender: TObject);
> begin
>    if dpos <> nil then
>      dpos._Release ;
> end;
> 
> end.
> 
> ---------------------------------------------------------
> Pozdrowienia,
> MKi

A nie powinno być tak?:

x := dpos.findPostalCodeV1(ad) ; 

wygląda na to, że masz o jeden parametr za dużo

Paweł
Technical Details
Message-ID: <76e85a13-69ac-4f0e-8699-59921d7442e1@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!78no101530itl.0!news-out.google.com!y88ni121ita.0!nntp.google.com!82no101816itk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <5c8f875c$0$502$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a24:6283:: with SMTP id d125mr1774559itc.14.1552983949251;        Tue, 19 Mar 2019 01:25:49 -0700 (PDT)
X-Received: by 2002:a9d:694a:: with SMTP id p10mr790982oto.84.1552983948862; Tue, 19 Mar 2019 01:25:48 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!78no101530itl.0!news-out.google.com!y88ni121ita.0!nntp.google.com!82no101816itk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi
Date: Tue, 19 Mar 2019 01:25:48 -0700 (PDT)
In-Reply-To: <5c8f875c$0$502$65785112@news.neostrada.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=217.99.219.204; posting-account=8ND_mgoAAAD5J9y9fnaTB1Kcu7xKWk7Q
NNTP-Posting-Host: 217.99.219.204
References: <5c8f875c$0$502$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <76e85a13-69ac-4f0e-8699-59921d7442e1@googlegroups.com>
Subject: Re: WSDL dla kuriera DPD - co robię źle?
From: zpksoft <zpksoft@op.pl>
Injection-Date: Tue, 19 Mar 2019 08:25:49 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit