[英]SOAP client throws “Error fetching http headers” after first request
我需要结识SOAP,并编写了一个连接到随机Web服务的简单客户端。 (事实证明,即使找到工作的服务也有点麻烦。)
到目前为止,我拥有的代码似乎可以正常工作-但实际上是这样: 每十秒钟只能工作一次 。
当我第一次加载页面时,它显示了我期望的结果-一个对象的var_dump-但是当我紧接着重新加载页面时,我看到的只是Error Fetching http headers
。 现在,无论我刷新多少次,大约需要十秒钟,直到再次获得正确的结果,然后重复该过程-刷新得太快,出现错误。
我看不到HTTP级别发生了什么,即使可以,我也不确定能否得出正确的结论。
对此处发布的类似 问题的答案包括将keep_alive
选项设置为false
,或扩展default_socket_timeout
,但是这两种解决方案都不适合我。
因此,长话短说: 这是服务方面的问题还是我可以解决的问题,如果是后者,如何解决?
这是到目前为止我得到的代码:
<?php
error_reporting(-1);
ini_set("display_errors", true);
ini_set("max_execution_time", 600);
ini_set('default_socket_timeout', 600);
$wsdl = "http://api.chartlyrics.com/apiv1.asmx?WSDL";
try
{
$client = new SoapClient($wsdl, array(
"keep_alive" => false,
"trace" => true
));
$response = $client->SearchLyricDirect(array(
"artist" => "beatles",
"song" => "norwegian wood"
));
var_dump($response);
}
catch (Exception $e)
{
echo $e->getMessage();
}
?>
任何帮助,将不胜感激。 (此外,如果您能启发我为什么在本地保存WSDL可以使该过程加快30秒,那也很好。我认为这是DNS查找需要花费大量时间吗?)
事实证明,与服务器整体的连接相当不稳定。
我(以及我曾问过的其他一些问题)只是尝试在浏览器中打开WSDL文件时遇到了类似的问题-它是第一次工作,但刷新后会以很长时间中断连接。
尽管我真的不能说出问题出在哪里,但这确实表明问题出在服务器而不是我的客户端上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.