PHP SOAP客户端访问非标准端口上的服务器

时间:2010-04-07 01:14:26

标签: php zend-framework soap

我正在尝试发送请求的服务可以通过非标准端口访问 - 所以不是端口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在这方面是否被打破?有解决方法吗?

1 个答案:

答案 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提交了一份错误报告:

http://framework.zend.com/issues/browse/ZF-9626