私の使命は、サード パーティの 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 トピックから取得した情報を適応させました。