我第一次执行SOAP请求失败并再次失败。 我必须通过SOAP发送一些数据,但我没有得到稳定的连接。
我使用PHP的SOAP扩展。我的代码如下所示。
$certificate = file_get_contents(DATA_PATH.'/modules/va/misc/CKTC.cer');
$options = array(
'uri' => 'https://data2.kroschke.net/service/MeinAutoUeberfuehrungen',
'allow_self_signed' => true,
'verify_peer' => true,
'local_cert' => $certificate,
'trace' => 1,
'exceptions' => true,
);
$wsdl = 'https://data2.kroschke.net/service/MeinAutoUeberfuehrungen?WSDL';
$SOAPClient = new SoapClient($wsdl, $options);
fb($SOAPClient->__getFunctions());
现在我的问题是,SOAP请求总是会遇到超时。
我检查了我的php设置,并激活了SOAP和OpenSSL。
我还尝试使用.pem而不是.cer文件。同样的问题。
这是我一直得到的: 警告:SoapClient :: SoapClient(https://data2.kroschke.net/service/MeinAutoUeberfuehrungen?WSDL):无法打开流:连接超时
任何可以提供帮助的人?
PS:不介意fb()函数。只是将所有内容打印到FireBug中的功能。
答案 0 :(得分:1)
尝试在浏览器中打开https://data2.kroschke.net或https://data2.kroschke.net/service/MeinAutoUeberfuehrungen?WSDL:您也会暂停。
最好的解决方案是与该soap-server的提供商(kroschke.com / kroschke.de进行联系?)并询问他们为什么他们的服务器已关闭或似乎挂起。
修改强>
这似乎不是问题,因此您唯一的选择是将超时设置为更高的值。为此,只需将connection_timeout
(以秒为单位的值)添加到您的选项中:
$options = array(
'uri' => 'https://data2.kroschke.net/service/MeinAutoUeberfuehrungen',
'allow_self_signed' => true,
'verify_peer' => true,
'local_cert' => $certificate,
'trace' => 1,
'exceptions' => true,
'connection_timeout'=> 30
);
如果它仍然超时,将值设置得更高 - 如果它仍然超时那么,在用PHP实现它之前尝试使用像soapUI之类的程序测试soap通信 - 如果你遇到soapUI问题也可以联系该soap-server的提供商,询问为什么他们的方法需要很长时间。
有关详细信息,请查看soapclient and it's options。