用于 WSDL 和服务调用的 PHP SoapClient 代理设置
配置 PHP SoapClient 的代理选项,用于加载 WSDL 和进行服务调用,而不把凭据注入 User-Agent。
远程 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 操作的总时长。