2016-04-04 19 views
2

私はAPIに接続してリクエストを送信し、データを取得したいと思います。soap api-php soapにparamsを挿入する方法

まず、私はすべての利用可能な機能を得る:

$client = new SoapClient('https://website.com/api.asmx?wsdl'); 
print_r($client->__getFunctions()); 

をそして私はこのように、配列を表示:

$client->CheckExample($params); 

[0] => CheckExampleResponse CheckExample(CheckExample $parameters) 

だから、私はこの方法を使用する必要があります。しかし、私はこのXMLを送る方法を知らない:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="XmlServices"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <xs:GetExample> 
      <xs:request> 
       <xs:Credentials> 
        <xs:UserName>?</xs:UserName> 
        <xs:Password>?</xs:Password> 
        <xs:PostlId>?</xs:HotelId> 
       </xs:Credentials> 
       <xs:DataTest>2015-01-01T00:00:00</xs:DataTest> 
       <xs:DataTest2>2015-01-02T23:59:59</xs:DataTest2> 
       <xs:StatusTest>publish</xs:StatusTest> 
      </xs:request> 
     </xs:GetExample> 
    </soapenv:Body> 
</soapenv:Envelope> 

CheckExampleの引数としてこのXML文字列を渡すと、このエラーが発生します。「リクエストパラメータはnullにはできません」

ありがとうございました。

+0

[PHPでSOAPを使用してXMLリクエストを送信する方法は?](http://stackoverflow.com/questions/6535353/how-to-send-xml-request-using-soap-in-php) – miken32

答えて

0

GetExampleメソッドは、__getFunctions呼び出しにも現れます。そして、この作業をする必要があります:あなたはSoapClientの方法として、SOAP関数を呼び出すとき

<?php 
$client = new SoapClient('https://website.com/api.asmx?wsdl'); 

$soapmessage = [ 
    'request' => [ 
     'Credentials' => [ 
      'UserName' => '?', 
      'Password' => '?', 
      'PostlId' => '?' 
     ], 
     'DataTest' => '2015-01-01T00:00:00', 
     'DataTest2' => '2015-01-02T23:59:59', 
    ] 
]; 

$result = $client->GetExample($soapmessage); 
print_r($result); 
+0

うわー、@Michiel Meertens非常に簡単に!ありがとう! :-) –

0

、あなたは本質的SoapClient::__soapCall()関数を呼び出すと、最初のパラメータとして関数名を渡しています。したがって、この関数のパラメータを理解することは良いことです。

引数を渡すには、配列を渡す必要があります。これは、SOAPサーバーが予期しているものと一致する必要があります。詳細はWSDLにあり、SoapClient::__getFunctions()の呼び出しでは表示されません。 SOAPサービスプロバイダは、WSDLを読みたくない場合は、適切な値を決定するためのAPIドキュメントも提供する必要があります。

SOAP関数にパラメータが必要ない場合でも、空の配列は引き続きPHP関数に渡されなければならないことに注意してください。

関連する問題