【发布时间】:2016-12-16 15:17:30
【问题描述】:
我正在尝试在代理后面同时运行 PHP SoapClient 和 SoapServer(用于 Magento),其中唯一允许的网络流量是通过代理服务器。
我已经和客户这样合作了:
$client = new SoapClient('https://www.domain.co.uk/api/v2_soap/?wsdl=1', [
'soap_version' => SOAP_1_1,
'connection_timeout' => 15000,
'proxy_host' => '192.168.x.x',
'proxy_port' => 'xxxx',
'stream_context' => stream_context_create(
[
'ssl' => [
'proxy' => 'tcp://192.168.x.x:xxxx',
'request_fulluri' => true,
],
'http' => [
'proxy' => 'tcp://192.168.x.x:xxxx',
'request_fulluri' => true,
],
]
),
]);
这按预期工作 - 所有流量都通过代理服务器。
但是,对于 SoapServer 类,我不知道如何强制它通过 SoapServer 发送所有出站流量。它似乎试图直接从网络加载http://schemas.xmlsoap.org/soap/encoding/,而不是通过代理,这导致抛出“无法从'http://schemas.xmlsoap.org/soap/encoding/'导入架构”错误。
我已尝试将 schemas.xmlsoap.org 的主机文件条目添加到 127.0.0.1 并在本地托管此文件,但我仍然遇到同样的问题。
我有什么遗漏吗?
【问题讨论】: