2

私の使命は、サード パーティの Web サービスに対するクライアントを開発することです。このサーバー マシンとソース コードにアクセスしたり処理したりすることはできません。私が持っているのは、API 仕様とアドレスだけです。プログラムは、認証なしで開発環境で正常に動作しますが、生産環境では、基本的な http 認証と証明書が必要であり、回答を受け取ることさえできません。自己署名証明書を使用できると言われたので、サーバー (CentOS Apache2+PHP5.3.3) に作成しました。

会社から DotNetServiceClient の機能的なコードが送られてきました。これには app.config が含まれており、リンクは次のとおりです。

この認証を送信する方法と、PHP SoapClient または CURL で証明書を送信する方法の例が必要です。

これは、偽の IP と証明書を含む C# アプリケーションの app.config です: http://pastebin.com/Jt9k6DB0

そして、これが私の現在のクライアントコードです:

/* PHP WebService Client */

$pemPath   = '/my/certificate/directory/selfsignedcertificate/thatwebservice.pem';
$pemBuffer = file_get_contents($pemPath);

$connectionParameters = array(
    'login'        => 'login',
    'password'     => 'password',
    'trace'        => TRUE,
    'encoding'     => 'UTF-8',
    'exceptions'   => TRUE,
    'cache_wsdl'   => WSDL_CACHE_NONE,
    'soap_version' => SOAP_1_2,
    'local_cert'   => $pemBuffer,
    'passphrase'   => 'd3e343der434wds',
);

$theClient = new SoapClient($serverWSDLURL, $connectionParameters);
$r         = $theClient->GetBasicWorkData();

答え: いいえ!タイムアウトのみ。

これら 2 つの StackOverflow トピックから取得した情報を適応させました。

  1. PHP5 SoapClient::SoapClient() をクライアント証明書で使用するには?
  2. SoapClient が証明書を送信しない
4

1 に答える 1

0

最終的に、本番サーバーが正常に機能せず、いくつかの設定とパラメーターが変更されました。単純な CURL の基本的な http 認証を使用しましたが、これで完了です。

于 2013-08-26T20:36:51.487 に答える