Verbrauchen Sie eine .Net-web-service mit PHP

Dies ist meine erste Zeit mit web-services/SOAP...ich habe versucht, Sie zu konsumieren .Net web services mit PHP, aber ohne Erfolg. Ich habe gesucht und gelesen, alle Seiten, die google wirft für alles, was mit, aber ich bin immer noch verloren.

Die Sache ist die der SOAP-service, die ich bin versucht zu rufen, hat Sie einen authorization-header, und ich kann nicht herausfinden, einen Weg zu authentifizieren meine Anfrage.

Habe ich versucht die php-soapclient und NuSoap beides, aber es gibt kein Beispiel-code zur Verfügung, die helfen würde. So dass jede Hilfe wäre toll.

Das folgende ist ein Beispiel einer SOAP-1.1-Anforderung und-Antwort.

POST /OxiWalletService/Service.asmx HTTP/1.1
Host: 172.160.0.49
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/WS_GetData"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xmlns:xsd="http://www.w3.org/2001/XMLSchema"   xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
  <AuthHeader xmlns="http://tempuri.org/">
    <UserName>string</UserName>
    <Password>string</Password>
  </AuthHeader>
</soap:Header>
<soap:Body>
  <WS_GetData xmlns="http://tempuri.org/">
     <xmlString>string</xmlString>
  </WS_GetData>
</soap:Body>
</soap:Envelope>

Antwort

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
  <WS_GetDataResponse xmlns="http://tempuri.org/">
    <WS_GetDataResult>string</WS_GetDataResult>
  </WS_GetDataResponse>
</soap:Body>
</soap:Envelope>

Kann jemand bitte gib mir ein Beispiel-code, wie zu konsumieren, einen solchen service.

Vielen Dank im Voraus!

Dies ist der code, den ich verwendet habe, um den Webdienst aufzurufen

<?php 

$soap_client = new SoapClient("http://172.160.0.49/OxiWalletService/Service.asmx?WSDL");

$Uid='oxigen';
$Pwd='oxigen';
$ns = "http://tempuri.org/";

//Body of the Soap Header.
$headerbody = array('UserName' => $Uid,
                    'Password' => $Pwd
                   );
//Create Soap Header.       
$header = new SOAPHeader($ns, 'AuthHeader', $headerbody);       

//set the Headers of Soap Client.
$soap_client->__setSoapHeaders($header);
$par="<Wallet><SPName>AuthenticateMerchantWebVending</SPName><Parameters>&lt;Parameter&gt;&lt;Name&gt;@Account&lt;/Name&gt;&lt;Size&gt;50&lt;/Size&gt;&lt;Value&gt;1135600016&lt;/Value&gt;&lt;Type&gt;varchar&lt;/Type&gt;&lt;/Parameter&gt;&lt;Parameter&gt;&lt;Name&gt;@Password&lt;/Name&gt;&lt;Size&gt;20&lt;/Size&gt;&lt;Value&gt;0OgknrdonyM=&lt;/Value&gt;&lt;Type&gt;varchar&lt;/Type&gt;&lt;/Parameter&gt;</Parameters><ParameterCount>2</ParameterCount><DataBase>1</DataBase></Wallet>";
$param=array('xmlString'=>$par);

$result=$soap_client->__SoapCall('WS_GetData',$param);

print_r ($result);

?>

und ich bekomme Folgendes als Ausgabe:

stdClass Object ( [WS_GetDataResult] => 2Unknown Fehler )

Ideen??

Also es stellt sich heraus, Sie haben zu passieren, die ein zweites argument, mit Parametern, die als Schlüssel des Arrays

Bedeutung dieses

$result=$soap_client->__SoapCall('WS_GetData',$param);

sollte

$result=$soap_client->__SoapCall('WS_GetData',array('parameters'=>$param));

Dieser funktioniert jetzt.

InformationsquelleAutor Tanmay | 2012-01-30
Schreibe einen Kommentar