使用proxy-options初始化SoapClient类时,可以通过代理正确访问WSDL及其方法:
$client = new SoapClient(
WSDL_URL,
array(
'proxy_host' => PROXY_HOST,
'proxy_port' => PROXY_PORT
)
);
但是,不能通过指定的代理访问模式(schemaLocation):
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified">
<xs:import namespace="http://example.com/webservice/cisbase" schemaLocation="http://example.com/ws/cis_base.xsd"/>
<xs:import namespace="http://de.ws.example" schemaLocation="http://example.com/ws/is_base_de.xsd"/>
</xs:schema>
这导致:
SOAP-ERROR:解析架构:无法从......导入架构
所以基本上SoapClient试图访问 cis_base.xsd 和 is_base_de.xsd 而没有代理失败。
PHP SoapClient的行为是否有这样的原因并且有解决方法吗?
答案 0 :(得分:1)
在我的代码中,我使用这些选项,这对我们的代理和https协议非常有用。我希望这对你有用:)
'proxy_host' => PROXY_HOST,
'proxy_port' => PROXY_PORT,
'stream_context' => stream_context_create(
array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
)
)
)
问候。
答案 1 :(得分:0)
尝试:
$client = new SoapClient(
WSDL_URL,
array(
'proxy_host' => PROXY_HOST,
'proxy_port' => PROXY_PORT,
'stream_context' => stream_context_create(
array(
'proxy' => "tcp://$PROXY_HOST:$PROXY_PORT",
'request_fulluri' => true,
)
),
)
);
您可能需要检查PHP documentation中的其他可能参数。