Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SOAP zwrócenie tablicy
Forum PHP.pl > Forum > PHP
gsk
Chcę zwrócić tablice i za chiny nie mogę wink.gif Siedzę już kilka godzin i nie wiem jak to ruszyć. Za każdym razem dostaje błąd:

  1. Fatal error: Uncaught SoapFault exception: [HTTP] Internal Server Error in /var/www/Test/Soap.php:7 Stack trace: #0 [internal function]: SoapClient->__doRequest('__call('hello', Array) #2 /var/www/Test/Soap.php(7): SoapClient->hello(Array) #3 {main} thrown in /var/www/Test/Soap.php on line 7


Natomiast gdy zwracam string'a normalnie go wyświetla.

Ktoś byłby tak miły i wytłumaczyłby mi o co chodzi?

Poniżej załączam plik wsdl.

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <definitions name="HelloWebService"
  3. targetNamespace="urn:hellowebservice"
  4. xmlns:tns="urn:hellowebservice"
  5. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  6. xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  7. xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  8. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  9. xmlns="http://schemas.xmlsoap.org/wsdl/">
  10.  
  11. <types>
  12. <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:hellowebservice">
  13. <xsd:complexType name="ArrayOfString">
  14. <xsd:complexContent>
  15. <xsd:restriction base="soapenc:Array">
  16. <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]" />
  17. </xsd:restriction>
  18. </xsd:complexContent>
  19. </xsd:complexType>
  20. </xsd:schema>
  21. </types>
  22. <message name="helloRequest">
  23. <part name="name" type="xsd:ArrayOfString" />
  24. </message>
  25. <message name="helloResponse">
  26. <part name="return" type="xsd:ArrayOfString" />
  27. </message>
  28. <portType name="HelloService">
  29. <operation name="hello">
  30. <input message="tns:helloRequest"/>
  31. <output message="tns:helloResponse"/>
  32. </operation>
  33. </portType>
  34. <binding name="HelloServiceBinding" type="tns:HelloService">
  35. <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  36. <operation name="hello">
  37. <soap:operation soapAction="urn:arnleadservicewsdl#hello" style="rpc"/>
  38. <input>
  39. <soap:body use="encoded" namespace="urn:hellowebservice"
  40. encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  41. </input>
  42. <output>
  43. <soap:body use="encoded" namespace="urn:hellowebservice"
  44. encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  45. </output>
  46. </operation>
  47. </binding>
  48. <service name="HelloService">
  49. <port name="HelloServicePort" binding="tns:HelloServiceBinding">
  50. <soap:address location="http://hello.pl/api/soap" />
  51. </port>
  52. </service>
  53. </definitions>
Dudon
Miałem podobny problem, tutaj masz coś co może ci pomóc:

http://www.ws-i.org/profiles/basicprofile-...l#soapenc_Array

możesz też użyć biblioteki NuSoap, pozwala ona na bardzo szybkie tworzenie serwera i klienta soap, ale mi osobiście działa tylko w sytuacji :

klient PHP + PHP serwer
gsk
Ok poradzilem sobie smile.gif Problem był w tym, że wsdl był cache'owany i nie reagował na moje zmiany... Na przyszłość radzę zaglądnąć to katalogu /tmp smile.gif

Pozdrawiam,
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.