php's SOAP extension og namespaces
Hej eksperterJeg har lavet en soap client i php, der forbinder til en webservice beskrevet i wdsl'en http://aws.oio.dk/oas/2/ParseAddressService.asmx?wsdl
Jeg bruger den meget simple og ligetil extension i php SOAP. Dette ser ud til at virke helt fint lige bortset fra at den ikke medtager namespace'et for input elementerne. Den generede xml hentet via trace funktionen ser sådan ud (efter lidt formatering:-)):
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://rep.oio.dk/knowledgecube.net/oas/">
<SOAP-ENV:Body>
<ns1:ParseFullAddressTextLineRequest>
<AddressTextInput>
Tørringvej 5, 3465 Blågård
</AddressTextInput>
</ns1:ParseFullAddressTextLineRequest>
</SOAP-ENV:Body></SOAP-ENV:Envelope>
Problemet er at den SOAP server der står i den anden ende ikke forstår inputet uden at der er angivet et namespace til mit input. Dvs. at den istedet skulle se ud som følger:
<SOAP-ENV:Body>
<ns1:ParseFullAddressTextLineRequest>
<ns1:AddressTextInput>
Tørringvej 5, 3465 Blågård
</ns1:AddressTextInput>
</ns1:ParseFullAddressTextLineRequest>
</SOAP-ENV:Body></SOAP-ENV:Envelope>
, hvilket er afprøvet og virker fint. Nu er det ikke svært for mig selv at forme den korrekte xml, men når der nu eksistere et ellers fremragende værktøj så virker det forkert. For lige at præcissere, så kalder foretager jeg soap requesten på følgende måde:
$soap = new SoapClient("http://aws.oio.dk/oas/2/ParseAddressService.asmx?wsdl",array('trace'=>true));
$params['AddressTextInput'] = $string;
try{
$soap->ParseFullAddressTextLine($params);
}catch(Exception $e){...}
Kan man på nogen måde lokke SOAP til at medtage dette namespace, eller er man nødt til at arbejde direkte med xml?