Avatar billede kezzelski Nybegynder
02. september 2006 - 18:04

php's SOAP extension og namespaces

Hej eksperter

Jeg 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?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester