Witam,

muszę zintegrować sklep internetowy z pasażem WP i mam mały problem. Chcę przesyłać odpowiednie komunikaty w formie kopert SOAPa do serwera SOAP. Z dokumentacji wyczytałem jak owe koperty powinny wyglądać - odpowiednie pliczki XMLa. Mam adres serwera soap (z dokumentacji), ale nie mogę obsłużyć wysyłania do niego zapytań i odbierania od niego odpowiedzi. Rzecz dotyczy obsługi tego w PHP.

  1. <?php
  2. $filename = "produkt.xml";
  3.  
  4. $soapclient = new SoapClient (null, array('location' => "http://wymianadanych.wp.pl/SOAPInterface/Zakupy/index.html",
  5. 'uri' => "http://wymianadanych.wp.pl/SOAPInterface/Zakupy/index.html");
  6.  
  7. $wynik = $soapclient->__doRequest($filename,"http://wymianadanych.wp.pl/SOAPInterface/Zakupy/index.html",$action,SOAP_1_2);
  8.  
  9. $handle = fopen("odp.xml", "r+");
  10.  
  11. fwrite($handle, $wynik);
  12. ?>


Odpowiedź zapisuje w pliku odp.xml. Wygląda następująco.

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <soap:Envelope
  3.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  5.    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  6.    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  7.    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  8.  <soap:Body>
  9.    <soap:Fault>
  10.      <faultcode>soap:Client</faultcode>
  11.  
  12.      <faultstring>Content-Type must be 'text/xml,' 'multipart/*,' or 'application/dime' instead of 'application/soap+xml'</faultstring>
  13.    </soap:Fault>
  14.  </soap:Body>
  15. </soap:Envelope>


Nie do końca jestem pewien, czy dobrze tworze nowy obiekt SoapClient (wyczytałem to z dokumentacji php) i czy na pewno za pomocą metody __doRequest powinno się wysyłać pliki z zapytaniem - gdy zmieniam ich parametry zawsze dostaję taką samą odpowiedź. Generalnie jestem nienajlepszy z obiektówki. Proszę o pomoc kogoś zaznajomionego z tym tematem.