0

私はこの問題を抱えています。現在、SOAP を学習し、PHPでhttp://vanillatours.comの wsdl を使用してオンライン予約システムを開発しています。

必要なヘッダーはsoapaction、およびcharsetです。私が含めたsoapactionは、希望するリクエストに合わせて変更します。たとえば、現在関数を実行しようとしていchecklogin()ます。

機能が付いているか調べてみprint_r($client->__getFunctions())たら、付いている!

print_r($client)ヘッダーが添付されているかどうかを確認しようとしましたが、それらは

問題は、このエラー メッセージが表示される理由がわからないことです。

System.NullReferenceException: Object reference not set to an instance of an object.
at WcfService.Wcf.CheckLogin(LoginHeaderWcfRequest loginHeader)

すべてを試しました!私は石鹸で非常に新しいので、助けていただければ幸いです。データ「リクエスト」を正しく使用していない可能性がありますか?

ありがとう!

<?php 

    $wsdl = "http://xmltest.vanillatours.com/Wcf.svc?wsdl";
    $client = new SoapClient($wsdl);

    $data = array(
     "request" => array(
      "a:AgentId" => blabla,
      "a:Language" => "En",
      "a:Password" => "blabla",
      "a:Username" => "blabla"
     )
    );

    $header = array();

    $header[] = new SoapHeader('http://tempuri.org/IWcf/CheckLogin','SOAPAction');
    $header[] = new SoapHeader('text/xml; charset=utf-8','ContentType');

    $client->__setSoapHeaders($header);


    $response = $client->__soapCall('CheckLogin', $data);

    echo '<pre>';


    print_r($client->__getFunctions()); // functions seem to show pretty well

    echo '<br>------------------------------------------------------<br><br>';

    print_r($client); // headers are attached 

    echo '<br>------------------------------------------------------<br><br>';

    print_r($response); // errormessage, can not figure out what is the problem.

    echo '</pre>';
?>

これは、ドキュメントから接続する方法です。他の方法を使用できる場合は、それも感謝します。

CheckLogin 関数は、ユーザー資格情報が有効かどうかをチェックします。SOAPAction 値はhttp://tempuri.org/IWcf/CheckLoginです

3.1.2 リクエスト

 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
 <s:Body> 

<CheckLogin xmlns="http://tempuri.org/"> 
<loginHeader xmlns:a="http://schemas.datacontract.org/2004/07/WcfService" 
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
 <a:AgentId>Your Agent Id</a:AgentId> 
 <a:Language>Your preferred language</a:Language> 
 <a:Password>Your Password</a:Password> 
 <a:Username>Your username</a:Username> 
 </loginHeader> 
 </CheckLogin> 
 </s:Body> 
 </s:Envelope>
4

1 に答える 1