SOAP wsdl:part name="request" element type question
| From: | Brendan_Crowley at DellTeam dot com | Date: | Wed, 09 Mar 2011 10:53:15 +0000 |
| Subject: | SOAP wsdl:part name="request" element type question | ||
| Groups: | php.soap | ||
| Request: | Send a blank email to php-soap+get-3267@lists.php.net to get a copy of this message | ||
I have a WSDL (ProblemReportService.wsdl) that is defined as follows:
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tns="http://localhost/ProblemReportService.wsdl"
xmlns:ha1="http://localhost/ProblemReport.xsd"
name="ProblemReportService" targetNamespace="http://localhost/ProblemReportService.wsdl">
<wsdl:types>
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified" xmlns:ha1="http://localhost/ProblemReport.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://localhost/ProblemReport.xsd"
schemaLocation="ProblemReport.xsd"/>
<xs:import namespace="http://localhost/dropdownvalues.xsd"
schemaLocation="dropdownvalues.xsd"/>
</xs:schema>
</wsdl:types>
<wsdl:message name="NewProblemReportRequest">
<wsdl:part name="request" element="ha1:ProblemReport"/>
</wsdl:message>
<wsdl:message name="ProblemReportResponse">
<wsdl:part name="parameter" type="xs:string"/>
</wsdl:message>
<wsdl:portType name="ProblemReportPortType">
<wsdl:operation name="submitProblemReport">
<wsdl:input message="tns:NewProblemReportRequest"/>
<wsdl:output message="tns:ProblemReportResponse"/>
</wsdl:operation>
</wsdl:portType>
..
I've created an xml file (ProblemReport.xml) that validates to ProblemReport.xsd.
I now have a SOAP Client php file that needs to send this request to the SOAP Server, how would I
write the client and server side in php?
Client:
try {
$client = new SoapClient("ProblemReportService.wsdl", array('soap_version'
=> SOAP_1_1,'trace' => 1 ));
// How would I define $request from the contents of ProblemReport.xml file?
$return = $client->__soapCall("submitProblemReport", $request);
} catch (SoapFault $fault) {
trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring:
{$fault->faultstring})", E_USER_ERROR);
}
Server:
ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("http://localhost/ProblemReportService.wsdl",
array('soap_version' => SOAP_1_1));
$server->addFunction("submitProblemReport");
$server->handle();
function submitProblemReport($problem) {
// How can I validate the $problem against a XSD schema?
// and how can I unmarshal the $problem to access the data contained within the original xml
file?
}
Any assistance appreciated.
Thanks,
Brendan