Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][SOAP] Usługa SOAP dla php, DHL WEBSERVICE
Mercel
post 21.08.2010, 20:09:26
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


Witam
Mam problem ze skonfigurowaniem DHL Webservice eCASOrder

Mam dokument XML o nazwie test.xml
  1. POST /app/ecas/eCASOrderWS.asmx HTTP/1.1
  2. Content-Type: text/xml; charset=utf-8
  3. Content-Length: length
  4. SOAPAction: "eCASOrderWS/DodajZlecenieWS"
  5.  
  6. <?xml version="1.0" encoding="utf-8"?>
  7. <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  8. <soap:Body>
  9. <DodajZlecenieWS xmlns="eCASOrderWS">
  10. <zlecenie>
  11. <Firma>string</Firma>
  12. <Ulica>string</Ulica>
  13. <Numer>string</Numer>
  14. <KodPocztowy>string</KodPocztowy>
  15. <Miasto>string</Miasto>
  16. <NumerSAP>string</NumerSAP>
  17. <Platnik>string</Platnik>
  18. <FormaPlatnosci>string</FormaPlatnosci>
  19. <DataPrzyjazduKuriera>string</DataPrzyjazduKuriera>
  20. <PrzesylkaGotowaOd>string</PrzesylkaGotowaOd>
  21. <ObiorMozliwyDo>string</ObiorMozliwyDo>
  22. <IloscPrzesylekDo31>int</IloscPrzesylekDo31>
  23. <IloscPrzesylekPow31>int</IloscPrzesylekPow31>
  24. <WagaNajciezszej>string</WagaNajciezszej>
  25. <ImieNazwisko>string</ImieNazwisko>
  26. <Email>string</Email>
  27. <TelefonStacjonarny>string</TelefonStacjonarny>
  28. <TelefonKomorkowy>string</TelefonKomorkowy>
  29. <DodatkoweInstrukcje>string</DodatkoweInstrukcje>
  30. <MiejsceNadania>string</MiejsceNadania>
  31. </zlecenie>
  32. </DodajZlecenieWS>
  33. </soap:Body>
  34. </soap:Envelope>



Muszę go wysłać na http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx, jak napisać taki skrypt w php?

Znalazłem w necie coś takiego, próbowałem pod "/https?:\/\/([^\/]*)(.*)/" podstawić adres dhl jednak nic nie działa:

  1. <?php
  2. ini_set('display_errors', "1");
  3.  
  4. $url= "test.xml";
  5.  
  6. echo "url\n$url\n";
  7.  
  8. preg_match("/https?:\/\/([^\/]*)(.*)/", $url, $matches);
  9. $host=$matches[1];
  10. $request=$matches[2];
  11.  
  12. $mxml=fread(STDIN,65536);
  13. $yt =curl_init();
  14. $header = "POST $request HTTP/1.0\r\n";
  15. $header .= "Host: $host\r\n";
  16. $header .= "Content-Type: text/xml\r\n";
  17. $header .= "Content-Length: ".strlen($mxml)."\r\n";
  18. $header .= "Content-Transfer-Encoding: text\r\n";
  19. $header .= "Connection-Close: close\r\n\r\n";
  20.  
  21. echo "header\n$header\n";
  22.  
  23. $header .= $mxml;
  24.  
  25. curl_setopt($yt, CURLOPT_SSL_VERIFYPEER,0);
  26. curl_setopt($yt, CURLOPT_URL, $url);
  27. curl_setopt($yt, CURLOPT_CUSTOMREQUEST, $header);
  28. curl_setopt($yt, CURLOPT_RETURNTRANSFER, true);
  29.  
  30. $rxml=curl_exec($yt);
  31. echo "sent\n$mxml\n";
  32. echo "received\n$rxml\n";
  33.  
  34. echo curl_error($yt);
  35. ?>


Prosiłbym o wskazówki co robię źle.

Ten post edytował Mercel 21.08.2010, 20:12:38
Go to the top of the page
+Quote Post
vokiel
post 21.08.2010, 20:50:49
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Chcesz korzystać z SOAP przez cURL? Może lepiej z SOAP?
http://php.net/manual/en/book.soap.php
http://devzone.zend.com/article/689


--------------------
Go to the top of the page
+Quote Post
Mercel
post 21.08.2010, 21:04:06
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


Cytat(vokiel @ 21.08.2010, 21:50:49 ) *
Chcesz korzystać z SOAP przez cURL? Może lepiej z SOAP?
http://php.net/manual/en/book.soap.php
http://devzone.zend.com/article/689



Próbowałem prze SOAP, napisałem coś takiego(opierając się na tym drugim linku oraz podobnym wątku na forum):

  1. <?php
  2. $filename = "xml.xml";
  3.  
  4. $soapclient = new SoapClient (null, array('location' => "http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx",'uri' => "http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx");
  5.  
  6. $wynik = $soapclient->__doRequest($filename,"http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx",$action,SOAP_1_2);
  7.  
  8. $handle = fopen("odp.xml", "r+");
  9.  
  10. fwrite($handle, $wynik);
  11. ?>


Jednak wyświetla błąd
Parse error: syntax error, unexpected ';' in /home/j/a/w/jaworzyna/www/xml/start.php on line 4

Ten post edytował Mercel 21.08.2010, 21:09:22
Go to the top of the page
+Quote Post
everth
post 21.08.2010, 21:06:04
Post #4





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Już nawet Geshi wychwyciło twój błąd - masz niedomknięty apostrof.

@DOWN: W takim razie niewiele mogę ci pomóc sad.gif. Może ktoś zna Soap bardziej od praktycznej strony.

Ten post edytował everth 21.08.2010, 21:21:18


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Mercel
post 21.08.2010, 21:10:56
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


everth dalej wyświetla błąd w 4 linii
  1. <?php
  2. $filename = "xml.xml";
  3.  
  4. $soapclient = new SoapClient (null, array('location' => "http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx",'uri' => "http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx");
  5.  
  6. $wynik = $soapclient->__doRequest($filename,"http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx",$action,SOAP_1_2);
  7.  
  8. $handle = fopen("odp.xml", "r+");
  9.  
  10. fwrite($handle, $wynik);
  11. ?>


To może chociaż jakaś porada jak to zrobić przez cURL?

Ten post edytował Mercel 21.08.2010, 21:37:35
Go to the top of the page
+Quote Post
vokiel
post 21.08.2010, 21:38:18
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Zrób var_dump($soapclient)

Manual podaje, że konstruktor przyjmuje 2 parametry: $wsdl i $options, więc może przekaż do pierwszego odpowiedni link:
  1. $soapclient = new SoapClient ('http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx?WSDL');




--------------------
Go to the top of the page
+Quote Post
Mercel
post 22.08.2010, 14:52:40
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2010

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


Zmieniłem kod, na poniższy

  1. <?php
  2. $filename = "test.xml";
  3.  
  4. $soapclient = new SoapClient ('http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx?WSDL');
  5.  
  6. $wynik = $soapclient->__doRequest($filename,"http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx",$action,SOAP_1_2);
  7.  
  8. $handle = fopen("odp.xml", "r+");
  9.  
  10. fwrite($handle, $wynik);
  11. ?>


Jednak teraz otrzymuje inny błąd:
Cytat
Warning: SoapClient::SoapClient(http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx?WSDL) [soapclient.soapclient]: failed to open stream: Connection refused in /home/j/a/w/jaworzyna/www/xml/start.php on line 4

Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx?WSDL" in /home/j/a/w/jaworzyna/www/xml/start.php on line 4

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://webapps.dhl.com.pl/app/ecas/eCASOrderWS.asmx?WSDL' in /home/j/a/w/jaworzyna/www/xml/start.php:4 Stack trace: #0 /home/j/a/w/jaworzyna/www/xml/start.php(4): SoapClient->SoapClient('http://webapps....') #1 {main} thrown in /home/j/a/w/jaworzyna/www/xml/start.php on line 4
Go to the top of the page
+Quote Post
--VonSNAKE--
post 5.09.2013, 18:21:25
Post #8





Goście







Boże Widzisz i nie grzmisz:D

A czy nie dojrzeliście przez 3 lata że otwieracie ' i nie zamykacie tego ' przez co nie ma ; ;D
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: 13.07.2025 - 02:10