🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#346940
From: Piotr Brzeziński
Date: Wed, 20 Mar 2019 05:47
144 lines
5204 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

Cześć

A może to problem wersji Delphi, którego używasz?
Zrobiłem to co napisałeś w XE5 i nie było żadnego problemu a x.status dostał wartość 'OK'.

Piotr
Technical Details
Message-ID: <87a77e06-53bb-4a90-a21e-957504cf97c8@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!1.eu.feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.166.215.MISMATCH!78no52837itl.0!news-out.google.com!l81ni111itl.0!nntp.google.com!w126no52281ita.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:334a:: with SMTP id k71mr3680778itk.14.1553060870143;        Tue, 19 Mar 2019 22:47:50 -0700 (PDT)
X-Received: by 2002:aca:b5c1:: with SMTP id e184mr4001164oif.75.1553060869890; Tue, 19 Mar 2019 22:47:49 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!1.eu.feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.166.215.MISMATCH!78no52837itl.0!news-out.google.com!l81ni111itl.0!nntp.google.com!w126no52281ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi
Date: Tue, 19 Mar 2019 22:47:49 -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=91.197.155.10; posting-account=FHcG8QoAAAC83MvA2uzNv2W2VnYms6B9
NNTP-Posting-Host: 91.197.155.10
References: <5c8f875c$0$502$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <87a77e06-53bb-4a90-a21e-957504cf97c8@googlegroups.com>
Subject: Re: WSDL dla kuriera DPD - co robię źle?
From: Piotr Brzeziński <p.brzezinski.71@gmail.com>
Injection-Date: Wed, 20 Mar 2019 05:47:50 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit