Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP, SOAP i DHL, Jak to ugryźć...?
bilbo192
post 9.09.2013, 21:09:18
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.09.2013

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Crozin
post 9.09.2013, 21:11:18
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Teraz zgadnij w jakim celu komputer sypie Ci błędami.
Go to the top of the page
+Quote Post
bilbo192
post 9.09.2013, 21:13:45
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.09.2013

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
markonix
post 9.09.2013, 21:14:54
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


No to po to jest forum, że liczysz na to że komuś innemu coś jednak ten błąd powie.


--------------------
Go to the top of the page
+Quote Post
bilbo192
post 9.09.2013, 21:27:29
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 9.09.2013

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
Puszy
post 10.09.2013, 15:14:34
Post #6





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2025 - 05:25