Hallo zusammen,
ich versuche gerade einen PHP Webservice mit NET zu konsumieren. Habe den Webservice einfach bei Web-References geaddet und einige Methoden funktionieren einwandfrei. Aber bei anderen stoße ich auf Probleme.
Die Webmethode:
public
string getXMLTree(string sid, int ref_id, string[ types, int user_id)
Die dazugehörige WSDL:
<wsdl:operation name="getXMLTree">
<soap:operation soapAction="urn:ilUserAdministration#getXMLTree" style="rpc" />
<wsdl:input>
<soap:body use="encoded" namespace="urn:ilUserAdministration" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</wsdl:input>
<wsdl:output>
<soap:body use="encoded" namespace="urn:ilUserAdministration" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</wsdl:output>
</wsdl:operation>
<wsdl:message name="getXMLTreeRequest">
<wsdl:part name="sid" type="xsd:string" />
<wsdl:part name="ref_id" type="xsd:int" />
<wsdl:part name="types" type="tns:stringArray" />
<wsdl:part name="user_id" type="xsd:int" />
</wsdl:message>
<wsdl:message name="getXMLTreeResponse">
<wsdl:part name="object_xml" type="xsd:string" />
</wsdl:message>
<xsd:complexType name="stringArray">
<xsd:complexContent mixed="false">
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute wsdl:arrayType="xsd:string[" ref="SOAP-ENC:arrayType" />
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
Erstes Problem: Der String-Array ist in der WSDL SOAP encoded. Der PHP Service gibt eine Fehlermeldung zurück, wenn ich einen .NET String-Array beim Methodenaufruf als Parameter nutze.
string
[ typearr ={ "cat", "ak" };
string respXML = myWebservice.getXMLTree(sessionid, 1, typearr, userrefid);
Zweites Problem: Der Service gibt eine Fehlermeldung zurück:
Der vom Client gefundene Anforderungsinhaltstyp ist 'text/html; charset=ISO-8859-1', erwartet wurde 'text/xml'.
Wie kann ich den Anforderungsinhaltstyp ändern?
Falls da mehr Probleme auftauchen, PHP Webservices so zu konsumieren, sollte ich dann einen SOAP Envelope direkt über ein WebRequest schicken?
Gruß & Danke,
Tobias