2017-02-08 1 views
1

Ich versuchte, mehrere Post-und PHP-Handbuch Seite zu kombinieren, aber ich habe nicht gut verstehen, wie man eine einfache Soap-Anfrage mit einem PHP-Soap-Client zu machen.einfache PHP-Soap-Client hilft

dies ist die Seife Beispiel, das ich zu beziehen haben:

http://<endpoint>/ourServer/services/spPushDataServicePort.svc 
Encoding: UTF-8 
Http-Method: POST 
Content-Type: text/xml; charset=UTF-8 
Headers: {connection=[Keep-Alive], Content-Length=[789], content-type=[text/xml; charset=UTF-8], host=[urbelog.tilab.com], SOAPAction=["pushData"], user-agent=[Axis2], via=[1.1 urlXXX], x-forwarded-for=[Url2Ip], x-forwarded-host=[urlXXX], x-forwarded-server=[urlXXX]} 
Payload: <?xml version='1.0' encoding='UTF-8'?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soapenv:Header/> 
    <soapenv:Body> 
    <ns1:outData xmlns:ns1="http://serverYYY"> 
    <vin>M55</vin> 
    <serviceProvider>URBELOG</serviceProvider> 
    <codeFunction>FLEET</codeFunction> 
    <date>2016-10-19T11:06:20.000+00:00</date> 
    <groups> 
    <name>GPS_DATA</name> 
    <params> 
     <name>LATITUDE</name> 
     <value>45.086666</value> 
    </params> 
    <params> 
     <name>LONGITUDE</name> 
     <value>9.29</value> 
    </params> 
    <params> 
     <name>TIMESTAMP</name> 
     <value>2016-10-19 13:06:20</value> 
    </params> 
    <params> 
     <name>ODOMETER</name> 
     <value>483734.56</value> 
    </params> 
    </groups> 
    </ns1:outData> 
    </soapenv:Body> 
</soapenv:Envelope> 

Das ist, was ich bisher geschrieben: Klasse senddata {

function __construct($vin, $serviceProvider,$codeFunction, $date, $lat, $long, $timeStamp, $mt) 
    { 
     $this->vin = $vin; 
     $this->serviceProvider = $serviceProvider; 
     $this->codeFunction=$codeFunction; 
     $this->date = $date; 
     $this-> groups= array('name'=>"GPS_DATA", 
           array('params'=>['LATITUDE'=>$lat]), 
           array('params'=>['LONGITUDE'=>$long]), 
           array('params'=>['TIMESTAMP'=>$timeStamp]), 
           array('params'=>['ODOMETER'=>$mt])); 

    } 
} 

/* Initialize webservice with your WSDL */ 
$client = new SoapClient("http://<endpoint>/ourServer/services/spPushDataServicePort.svc"); 

/* Set your parameters for the request */ 
$params=new sendData("uno","due","3","4","5","6","7","8"); 

/* Invoke webservice method with your parameters, in this case: Function1 */ 
$response = $client->__soapCall(?????, $params); 


var_dump($response); 

meine Fragen sind:

  • was ive in der $response = $client->__soapCall(?????, $params); "????" Teil?
  • Was ist der richtige Weg, um Params zu einer Soap-Funktion zu übergeben?
  • ist es die richtige und intelligentere Herangehensweise an das Problem?

Antwort

1

Der erste Parameter von __soapCall ist der Name der Funktion die Sie anrufen möchten, so dass in diesem Fall sollte es sein „pushData“ (Das Beispiel zeigt SOAPAction=["pushData"])

Der zweite Parameter von __soapCall eine Anordnung nimmt, so der richtige Weg params vorbei ist:

$response = $client->__soapCall("pushData", array($params)); 

Eine bessere und sauberere Ansatz könnte sein, es auf diese Weise zu tun:

$response = $client->pushData($params); 

Für weitere Informationen aus dem Web-Service über die Methoden und Datentypen, die Sie verwenden müssen, können Sie verwenden:

var_dump($client->__getFunctions()); 
var_dump($client->__getTypes()); 

Here's more info über die SoapClient Klasse und was man damit machen kann.

+0

vielen dank ich werde versuchen mit ihren tipps, prost – JahStation

Verwandte Themen