0

wsdl を読み込んで、関数とデータ型を正常に引き出すことができますが、サーバーで関数を呼び出そうとすると、接続エラーが発生します。$request で渡された SOAP データを見ると、セキュリティ証明書が含まれておらず、エラーも生成されていません。

私のコードは次のようになります。

  // setup the transaction array
  $header = array('local_cert' => "certificate.pem",
                  'logonUser'  => "user_name",
                  'style'      => SOAP_DOCUMENT,
                  'use'        => SOAP_LITERAL,
                  'exceptions' => true,
                  'trace'      => true);                  

  // create the soap client, this will log us in
  $client = new SoapClient($wsdl, $header);

  try
  { 
    $response = $client->getMessage($parameters);
  }
  catch (Exception $e) 
  {
    dumpVars($client->__getLastRequest()); 
    echo 'Caught exception: ',  $e->getMessage(), "\n"; 
  }
?>

私の質問はこれです。セキュリティ証明書を渡すにはどうすればよいですか?

ありがとう、

ピート

4

2 に答える 2

1

$header の local_cert の目的は、SOAP 呼び出し自体でそれを送信することではありません。SSL クライアント証明書としてのみ使用されています。また、php.net に関するこのコメントによると、証明書を使用するには、証明書のファイルの内容を読む必要があります。

于 2011-07-30T12:10:57.057 に答える
0

2 (小さい) もの :

  • 「logonUser」は、 SoapClient コンストラクターの有効なオプションではないようです。このサービスに必須のヘッダーである場合は、soapClient::setSoapHeadersの使用を検討してください。標準の HTTP ログイン パラメータの場合は、'login' キーを使用します。

  • pem 証明書のフル パスを使用して、php で読み取り可能であることを確認してください。

于 2011-07-30T12:10:43.783 に答える