Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP, SOAP i DHL
Forum PHP.pl > Forum > PHP
bilbo192
Hej wszystkim!
Mam już dosyć składania zleceń w DHL poprzez cURL. Postanowiłem zacząć komunikować się z DHLem za pośrednicwem protokołu SOAP z którym nigdy nie miałem do czynienia smile.gif Wygląda banalnie prosto w obsłudze, ale tak chyba nie jest biggrin.gif

Tak zestawia się (niby połączenie) i używa funkcji getVersion nie wymagającej autoryzacji:
Kod
class DHL24_webapi_client extends SoapClient
{
    const WSDL = 'https://dhl24.com.pl/webapi';

    public function __construct()
    {
        parent::__construct( self::WSDL );
    }
}

$client = new DHL24_webapi_client;
$result = $client->getVersion();
echo $result;


Problem w tym, że gdy chcę użyć innej funkcji opisanej tutaj: https://dhl24.com.pl/webapi/doc.html podstawiając tak:

Kod
$result = $client->authData();


to zaczyna sypać błędami :-/ Bardzo proszę o wskazówkę jak należy obsługiwać SOAP :-/ A może ktoś już pisał komunikację z DHLem?
Crozin
Teraz zgadnij w jakim celu komputer sypie Ci błędami.
bilbo192
Cytat(Crozin @ 9.09.2013, 22:11:18 ) *
Teraz zgadnij w jakim celu komputer sypie Ci błędami.

Cel jest mi znany, natomiast jego znaczenie (błędu) jest mi obce. Nie przypomina to żadnego błędu z którymi się spotkałem do tej pory.
markonix
No to po to jest forum, że liczysz na to że komuś innemu coś jednak ten błąd powie.
bilbo192
Ok, więc chcę sobie poćwiczyć na prostej funkcji sprawdzania losów przesyłki. Zrobiłem kod:

Kod
class DHL24_webapi_client extends SoapClient
{
    const WSDL = 'https://dhl24.com.pl/webapi';

    public function __construct()
    {
        parent::__construct( self::WSDL );
    }
}

$client = new DHL24_webapi_client;

$params = array(
    'authData' => array(
        'username' => 'moj_login',
        'password'    => 'haslo'
    ),
    'shipmentId' => '12441456259'
);

//$result = $client->getVersion();
$result = $client->__call('getTrackAndTraceInfo', $params);
print_r($result);


I dostaję komunikat:
Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] Error cannot find parameter in /Tools/dhl24.php:24 Stack trace: #0 /Tools/dhl24.php(24): SoapClient->__call('getTrackAndTrac...', Array) #1 {main} thrown in /Tools/dhl24.php on line 24

Przesyłam raczej dobre dane (https://dhl24.com.pl/webapi/doc/getTrackAndTraceInfo.html).
Puszy
tutaj masz link z mini opisem co i jak http://forum.php.pl/index.php?showtopic=21...p;#entry1023864

Ogólnie wygodniej jest operować na obiektach niż tablicy, do tego czytaj to co Ci zwraca SoapFault, najczęściej są to błędy związane z brakiem pola, lub złej wartości pola. Dodatkowo możesz przejrzeć sam plik WSDL, w górnej części wszystko jest łądnie opisane, o ile ogarniasz choć trochę XMLa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.