リモート WSDL の読み込みは SoapClient のコンストラクタ内で発生することがあります。その最初の取得の前にプロキシを指定します:

$client = new SoapClient('https://service.example.com/api?wsdl', [
    'proxy_host' => '203.0.113.10',
    'proxy_port' => 8080,
    'proxy_login' => getenv('PROXY_USER'),
    'proxy_password' => getenv('PROXY_PASSWORD'),
    'connection_timeout' => 5,
    'exceptions' => true,
]);

実際の WSDL、プロキシのホスト/ポート、想定する認証情報の取得元を使用します。ホストフィールドはアドレスで、ポートは別です。

失敗したとき調査すべきリクエストまたは操作
クライアントの生成WSDL の取得またはドキュメント処理。
インポートされたドキュメント/スキーマの処理実際の追加取得 URL。
SOAP メソッド呼び出しWSDL で宣言されたサービスエンドポイント。別ホストの可能性があります。

キャッシュされた WSDL を使うワーカーは、別のマシンで失敗するリクエストを省略することがあります。キャッシュ設定と実際に失敗した URL を比較とともに残し、生成の成功だけを根拠にプロキシを変更しないでください。

proxy_login/proxy_password は 仲介者 を認証します。宛先の login/password と SOAP レベルのサービス認証は別の層の役割です。アカウントのようなヘッダーを User-Agent に入れるのではなく、専用のオプションを使用してください。必要なアプリケーションヘッダーは、サポートされたヘッダーインターフェースに属します。

記録する 操作、対象、およびチャレンジを発行した当事者 を、秘密情報を除いて。connection_timeout は接続の確立を制限するもので、長時間の SOAP 操作の総所要時間ではありません。

関連記事