Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] SoapClient
Forum PHP.pl > Forum > Przedszkole
adi456
Witam, walcze z wymianą danych soap

przykład pokazuje jak powinna wyglądać wysyłana treść

  1. POST /WebAPI.asmx HTTP/1.1
  2. Host: webapi.xxx.pl
  3. Content-Type: application/soap+xml; charset=utf-8
  4. Content-Length: length
  5.  
  6. <?xml version="1.0" encoding="utf-8"?>
  7. <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  8. <soap12:Body>
  9. <doLogin xmlns="http://webapi.xxx.pl/">
  10. <Token>string</Token>
  11. <EMail>string</EMail>
  12. <Passwd>string</Passwd>
  13. <RefreshPrice>boolean</RefreshPrice>
  14. </doLogin>
  15. </soap12:Body>
  16. </soap12:Envelope>


zrobiłem taki kod

  1. $tab = array(
  2. 'Token' => 'XXX-XXX',
  3. 'EMail' => 'XXX',
  4. 'Passwd' => 'XXX',
  5. );
  6.  
  7. $soap = new SoapClient('https://webapi.xxx.pl/WebAPI.asmx?WSDL', array('soap_version' => SOAP_1_2, 'trace' => 1));
  8. $result = $soap->__soapCall('doLogin',$tab);
  9. print_r($result);
  10.  
  11. echo htmlentities(str_ireplace('><', ">\n<", $soap->__getLastRequestHeaders())) . "\n";
  12. echo "REQUEST:\n" . htmlentities(str_ireplace('><', ">\n<", $soap->__getLastRequest())) . "\n";
  13.  
  14. echo htmlentities(str_ireplace('><', ">\n<", $soap->__getLastResponseHeaders())) . "\n";
  15. echo "Response:\n" . htmlentities(str_ireplace('><', ">\n<", $soap->__getLastResponse())) . "\n";


i oto wynik powyższego skryptu

  1. stdClass Object
  2. (
  3. [doLoginResult] => stdClass Object
  4. (
  5. [ErrorMessage] => Procedure or function 'SDG_WebAPI_pDoLogin' expects parameter '@pToken', which was not supplied.
  6. [ErrorCode] => UnknowError
  7. [SessionKey] =>
  8. )
  9.  
  10. )
  11. POST /WebAPI.asmx HTTP/1.1
  12. Host: webapi.xxx.pl
  13. Connection: Keep-Alive
  14. User-Agent: PHP-SOAP/5.3.28-0+tld2
  15. Content-Type: application/soap+xml; charset=utf-8; action="http://webapi.xxx.pl/doLogin"
  16. Content-Length: 254
  17.  
  18.  
  19. REQUEST:
  20. <?xml version="1.0" encoding="UTF-8"?>
  21. <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://webapi.xxx.pl/">
  22. <env:Body>
  23. <ns1:doLogin/>
  24. <param1>XXX</param1>
  25. <param2>XXX</param2>
  26. </env:Body>
  27. </env:Envelope>
  28.  
  29. HTTP/1.1 200 OK
  30. Cache-Control: private, max-age=0
  31. Content-Type: application/soap+xml; charset=utf-8
  32. Server: Microsoft-IIS/7.0
  33. X-AspNet-Version: 2.0.50727
  34. X-Powered-By: ASP.NET
  35. Date: Wed, 11 Jun 2014 09:28:50 GMT
  36. Content-Length: 521
  37.  
  38. Response:
  39. <?xml version="1.0" encoding="utf-8"?>
  40. <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  41. <soap:Body>
  42. <doLoginResponse xmlns="http://webapi.xxx.pl/">
  43. <doLoginResult>
  44. <ErrorMessage>Procedure or function 'SDG_WebAPI_pDoLogin' expects parameter '@pToken', which was not supplied.</ErrorMessage>
  45. <ErrorCode>UnknowError</ErrorCode>
  46. <SessionKey />
  47. </doLoginResult>
  48. </doLoginResponse>
  49. </soap:Body>
  50. </soap:Envelope>


wie ktoś dlaczego moja wysyłana paczka różni się od przykładu i co zmienić żeby wszystko było jak w przykładzie?
Pyton_000
A tak:
Kod
$result = $soap->__soapCall('doLogin',array($tab));
adi456
Śmiga dzięki wink.gif
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.