2012-07-23 79 views
0

在wsdl模式下運行的SoapClient不支持OS代理排除,並且似乎沒有標記直接添加它們。SoapClient不遵守no_proxy排除規則

當模式定義引用內部和外部定義的模式時,這會造成困難。 對於測試,我已經將本地最初的wsdl文檔拉出來了。我已經啓用代理作爲模式引用w3.org和其他一些基於互聯網的模式定義。問題是本地文檔仍然引用代理的內部和外部資源,並且一旦啓用代理,它就希望通過它發送每個請求。

我有以下代碼:

$client = new SoapClient('SomeResource.wsdl',array(
    'proxy_host'=>'10.0.0.1', 
    'proxy_port'=>8080, 
    'soap_version'=>SOAP_1_1, 
    'exceptions'=>true, 
    'trace'=>1, 
    'cache_wsdl'=>WSDL_CACHE_NONE, 
    'login'=>'username', 
    'password'=>'password' 
)); 

在後臺運行strace:

stat("http://localresource.localdomain.com:1080/some/version/Common.xsd", 0x7fffd94a36d0) = -1 ENOENT (No such file or directory) 
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 7 
fcntl(7, F_GETFL)      = 0x2 (flags O_RDWR) 
fcntl(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0 
connect(7, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("10.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) 
... timeout here cause it's a local resource ... 

我當然有改變了名字,以保護我的客戶,但我有localdomain.com在我的名單NO_PROXY :

somehost:someuser> env |grep proxy 
http_proxy=http://10.0.0.1:8080 
ftp_proxy=http://10.0.0.1:8080 
https_proxy=http://10.0.0.1:8080 
no_proxy=localdomain.com,localhost,127.0.0.1 

將no_proxy添加到SoapClient輸入無效。

缺少拉內部所有模式和修改所有這些引用也指向本地定義的資源,有沒有什麼辦法讓SoapClient遵守no_proxy規則?

回答

0

我結束了所有的模式內部並修改所有這些模式也指向本地定義的模式。