我正在尝试发送请求的服务可以通过非标准端口访问 - 所以不是端口80.它可以通过端口80在本地访问。所以我在本地测试了应用程序,它运行正常。但是当我在生产服务器(而不是局域网)上部署它时,它就失败了。
再一次为了清晰起见:
-dev服务器在LAN上
-SOAP服务器在LAN上
- 生产服务器在WAN上
-SOAP服务器可通过NAT / FW通过非标准http端口(不是80)访问
使用指定的WSDL URI创建soap客户端。例如:
$this->client = new Zend_Soap_Client('http://server.com:10080/path/service.asmx?WSDL');
但查询不起作用:
$this->client->function($query);
我得到了:
Internal Server Error
抛出异常。
PHP在这方面是否被打破?有解决方法吗?
答案 0 :(得分:1)
我找到了解决方法:
$this->client = new Zend_Soap_Client('http://server.com:10080/path/service.asmx?WSDL',array('proxy_host' => 'server.com', 'proxy_port' => 10080));
我假装有一个代理人。我将代理端口指定为服务器的端口。这有效。但是,我仍然想知道我是否犯了错误,或者这是否是ZF或PHP中的错误。我现在向ZF提交了一份错误报告: