PHP SoapClient:SoapFault异常无法连接到主机

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP SoapClient:SoapFault异常无法连接到主机脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
使用这个代码我做肥皂请求
$client = new SOApClient('http://example.COM/soap/wsdl');

try {
    $result = $client->;myMethod();
} catch (Exception $e) {
    echo $e->getMessage();
}

有时(十分之一),有一个例外:

我的尝试

1)我寻找解决方案,I read这个问题可以由wsdl缓存引起,我在PHP.ini中禁用它:

soap.wsdl_cache_enabled = 0
soap.wsdl_cache_TTL = 0

引起少数例外

2)我试图添加到主机的Windows(他们在Windows上)Windows / system32 / drivers / etc / hosts中的dns的分辨率:

160.XX.XXX.XX example.com

引起少数例外

3)我也试图禁用“Windows火墙”,

引起少数例外

4)我也试图增加PHP.ini中的default_socket_timeout

default_socket_timeout = 90

什么也没有变

问题

服务器肥皂似乎没有问题.它也是从其他网站也没有问题.还有什么我能做的吗

我的设置

UPDATE

经过多次测试,我认为问题是在网络中,肥皂服务器背后是反向代理,问题出现在代理中.

您需要进一步改进您的调试工作:

广告1)WSDL是否有所改变?如果没有,请打开WSDL缓存.您不需要连接到服务器来获取WSDL文件.

你提到的输出是真的在echo $e-> getMessage();?您可以在catch()块中添加一些调试代码,例如:

>检查是否可以以其他方式连接到服务器(例如file_get_contents($soap_url))
>如果没有,请检查您遇到什么样的错误

>打印时间并检查SOAP服务器上的错误日志
> 403对于服务器上的问题,禁止或类似的错误
> a无法将错误点连接到网络问题(不仅仅是机会更高)

>你可以尝试把它放在一个循环中(某些东西沿着($i = 0; $i< = 5; $i){/ * ... * / sleep(1); continue;})看看第二次尝试会使它工作 总而言之,“有时错误”很难调试,因此您应该尝试使其可重现(这将指向问题),或者您需要尽可能多地记录和输出数据,以便您可以看到问题是在发生的时候.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP SoapClient:SoapFault异常无法连接到主机全部内容,希望文章能够帮你解决PHP SoapClient:SoapFault异常无法连接到主机所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。