2010-04-07 73 views
0

我试图发送请求的服务可以通过非标准端口访问 - 所以不能访问端口80.它可以通过端口80本地访问。所以我测试了该应用程序本地和它工作正常。但是,当我将其部署到生产服务器(而不是局域网)时,它会失败。PHP SOAP客户端访问非标准端口上的服务器

再次为清楚:

-dev服务器是LAN

-SOAP服务器上是LAN

-production服务器是在WAN

-SOAP服务器可通过非标准http端口(不是80)通过NAT/FW访问

soap客户端使用指定的WSDL URI创建。例如:

$this->client = new Zend_Soap_Client('http://server.com:10080/path/service.asmx?WSDL'); 

但是查询到不行:

$this->client->function($query); 

我得到一个:

Internal Server Error 

抛出异常。

PHP在这方面打破了吗?有没有解决方法?

回答

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提交了一个bug报告:

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

+0

没什么新鲜的。 – 2010-11-23 04:27:33