1

PHP を使用してWeb サービスに接続しています。

利用可能なメソッドの使用を開始するためのチケットを生成できるように、いくつかのログイン詳細を使用して Web サービスに接続する必要があります。

ここにいくつかのコードがあります:

//Connect To WebCrm API
$client = new SoapClient("http://b2b-email.net/apicrm1/webCRMAPI.asmx?wsdl",    array('trace' => 1));

//Login
$ticket = $client->Authenticate(array('code' => 'rhgkhgk','user' =>'myusername','password' =>'apass'));

これから、応答 SOAP ヘッダーでチケットが生成されます。これは、Ticket Header Then GUID の下に生成されます。(下記参照)

 <?xml version="1.0" encoding="utf-8"?>
     <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Header>
         <TicketHeader xmlns="http://www.webcrm.com/">
             <Guid>TICKET->>>>>>>>e446373e-8fg0-4dfc-b876-41f3bc8990dd</Guid>
        </TicketHeader>
      </soap:Header>
       <soap:Body>
        <AuthenticateResponse xmlns="http://www.webcrm.com/">
          <AuthenticateResult>
        <Message />
        <Code>0</Code>
      </AuthenticateResult>
    </AuthenticateResponse>
  </soap:Body>
</soap:Envelope>

Web サービスを使用して他のタスクを実行するには、このチケット ID が必要ですが、どのようにアクセスしてコード内で使用できますか?

私は以下を使用してみました:

$response = $client->__getLastResponse();

ただし、これは次のように出力されます。

6d5933d3-46ff-4690-893d-2af04806668c->>>>>>>>0<<<<<ZERO ON THE END

ゼロは、あるべきではないときに常に最後にありますか?

Soap Header からチケットにアクセスできる最善の方法でこれが起こっている理由についての助けをいただければ幸いです。

4

1 に答える 1

1

マニュアルによると:

$soapclient->__soapCall("soapmethod", array(parameters), null, $input_headers, &$output_headers);

$ output_headersには、応答メッセージのヘッダーが含まれている必要があります。

$client->__getLastResponse()最後の応答のXMLを返します。これをブラウザで表示していて、ブラウザがこれをHTMLとして解釈しようとしています。このため、XMLタグは表示されず、テキストのみが表示されます。そのため、0が表示されます。XML全体をいくつかの方法で表示できます。

  • PHPページのソースを表示する
  • echoステートメントを<xmp></xmp>タグでラップします。
  • エコーする前に、XMLでhtmlentities()を呼び出します。
于 2012-09-18T14:58:17.603 に答える