【问题标题】:SoapClient not honoring no_proxy exclusionsSoapClient 不遵守 no_proxy 排除项
【发布时间】:2012-07-23 15:08:46
【问题描述】:

在 wsdl 模式下运行的 SoapClient 不支持 OS 代理排除,并且似乎没有直接添加它们的标志。

当架构定义同时引用内部和外部定义的架构时,这会带来困难。 对于测试,我已将初始 wsdl 文档拉到本地。我已启用代理,因为架构引用 w3.org 和其他一些基于 Internet 的架构定义。问题是本地文档仍然引用代理内部和外部的资源,一旦我启用代理,它希望通过它发送每个请求。

我有以下代码:

$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 ...

我当然更改了名称以保护我的客户,但我的 no_proxy 列表中确实有 localdomain.com:

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

向 SoapClient 输入添加 no_proxy 无效。

没有提取所有内部架构并修改所有这些引用以指向本地定义的资源,有没有办法让 SoapClient 遵守 no_proxy 规则?

【问题讨论】:

    标签: php linux soap proxy


    【解决方案1】:

    我最终提取了所有内部架构并修改了所有这些架构以也指向本地定义的架构。

    【讨论】:

      猜你喜欢
      • 2011-09-18
      • 2015-02-07
      • 2023-03-06
      • 1970-01-01
      • 2016-08-29
      • 2023-03-13
      • 2015-09-26
      • 1970-01-01
      • 2023-01-04
      相关资源
      最近更新 更多