php curl 响应随机空白

php curl response blank randomly

我们正在使用 curl 实施 api。 我们发送 xml 请求并得到 xml 响应。 一些随机案例我们没有收到任何回复。 当我们 co-ordinated 与 api 供应商合作时,他们告诉我们在空白响应的情况下没有请求命中那里的服务器。

我们怎么知道,它没有命中 api 提供商服务器。 有 header 回应吗?

你会得到卷曲错误和errorno.Use这个

var_dump(curl_errno($ch));
var_dump(curl_error($ch));

您需要添加一些代码来处理响应 我不知道你的代码是什么样子,但它可能就这么简单

// add this line before curl_exec
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  

$response = curl_exec($curl);

$status = curl_getinfo($curl);
// do this before closing curl connection
curl_close($curl);  

这里是关于 curl_getinfo 的更多详细信息 http://php.net/manual/en/function.curl-getinfo.php

添加到您的 curl 查询:

curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

curl 会更冗长

curl_getinfo($ch);

也有帮助

一些 cURL 故障排除选项:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 100);
curl_setopt($ch, CURLOPT_TIMEOUT,100);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
curl_setopt($ch, CURLOPT_ENCODING,"");
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HEADER, true);

获取结果

$data = curl_exec($ch);
if (curl_errno($ch)){
    $data .= 'Retreive Base Page Error: ' . curl_error($ch);
}
else {
$skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE)); 
$responseHeader = substr($data,0,$skip);
$info = curl_getinfo($ch);
$requestHeader = $info['request_header'];
$info = var_export($info,true);
echo "<pre>$requestHeader \n\n $responseHeader\n\n $info \n $data";