Avatar billede Slettet bruger
01. december 2011 - 15:00 Der er 1 kommentar og
1 løsning

Kan ikke få mit SOAP-script til at fungere.

Jeg har følgende linier:

$client = new SoapClient("http://hostfjernet?WSDL", array('trace' => TRUE));
$result_array = $client->AuthenticateUser(new SoapParam("mailadresse", 'email'), new SoapParam("kodeord", 'password'));
var_dump($client->__getLastRequest());


Jeg får følgende xml-output:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://rep.eogs.dk/cvr.dk/xml.schema/20071112/">
  <SOAP-ENV:Body>
    <ns1:AuthenticateUser/>
      <password>kodeord</password>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Når jeg bruger programmet SOAPUI til at teste med får jeg følgende xml-output:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="hostfjernet">
  <soap:Header/>
  <soap:Body>
      <ns:AuthenticateUser>
        <ns:authenticateUserRequest>
            <!--Optional:-->
            <ns:email>mailadresse</ns:email>
            <!--Optional:-->
            <ns:password>kodeord</ns:password>
        </ns:authenticateUserRequest>
      </ns:AuthenticateUser>
  </soap:Body>
</soap:Envelope>


Uddrag af den service jeg forsøger at tilgå:

      <s:element name="AuthenticateUser">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="authenticateUserRequest" type="tns:AuthenticateUserRequest" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="AuthenticateUserRequest">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="email" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:element name="AuthenticateUserResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="AuthenticateUserResult" type="tns:AuthenticateUserResponseType" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="AuthenticateUserResponseType">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="AuthenticationStatus" type="tns:AccessLevel" />
          <s:element minOccurs="0" maxOccurs="1" name="AuthorizationStatus" type="tns:ArrayOfAuthorization" />
          <s:element minOccurs="1" maxOccurs="1" name="UserId" type="s:int" />
        </s:sequence>
      </s:complexType>


Hvad gør jeg forkert?
02. december 2011 - 12:11 #1
Du skal opbygge HELE kaldets XML struktur som PHP datastruktur i sin SoapParam, som her:

$client = new SoapClient("http://hostfjernet?WSDL",
  array('trace' => TRUE));

try {
  $result = $client->AuthenticateUser(
    new SoapParam(
    array('authenticateUserRequest' =>
      array("email" => "XXX", "password" => "YYY")
    ), 'AuthenticateUser')
  );
} catch (SoapFault $exception) {
  echo "There was an exception in the SOAP transaction:\n ";
  echo $exception;
}
var_dump($client->__getLastRequest());
var_dump($client->__getLastResponse());
var_dump($result);


Så skulle du gerne kunne få den ønskede request afsted.
Avatar billede Slettet bruger
02. december 2011 - 12:56 #2
Super, det var lige hvad jeg manglede.
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