我正在开发一个Web应用程序,它连接到Xero's API,使用Laravel Xero获取联系人和发票。起初,它正确地获取数据。然后cURL 18错误开始不规律地出现。现在,这个错误已经变成了永久性的。
检查Xero的开发人员 Jmeter 板,我所做的调用显然得到了一个状态200,这让我相信错误是真正从我的结束。
下面是调用时的代码:
protected function guzzle ($type, $request, $data = [], $raw = false)
{
try {
$client = new Client;
$headers = [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$this->getAccessToken(),
'Xero-tenant-id' => $this->getTenantId(),
'Accept-Encoding' => 'gzip, deflate',
];
$response = $client->$type(self::$baseUrl.$request, [
'headers' => $headers,
'body' => $raw ? $data : json_encode($data),
]);
return [
'body' => json_decode($response->getBody()->getContents(), true),
'headers' => $response->getHeaders()
];
} catch (ClientException $e) {
throw new Exception($e->getResponse()->getBody()->getContents());
} catch (Exception $e) {
throw new Exception($e->getMessage());
}
}
字符串
cURL 18错误开始出现在$response
上,异常在catch (Exception $e)
函数处被捕获。
我几乎尝试了网上所有的建议,但没有任何成功。
提前感谢您的任何帮助。
- 供参考:cURL错误18:**传输已关闭,剩余未完成的读取数据 *
1条答案
按热度按时间yqhsw0fo1#
我最近遇到了同样的问题,得到间歇性的cURL错误18错误,尽管Xero报告说,呼叫成功地通过了他们的结束。快把我逼疯了,但终于找到了解决办法。
尝试在受影响的GET请求的头中设置以下内容:
第一个月
因此,根本不为Content-Length指定任何值,但仍将其包含在标头中。通过这种方式告诉Xero我的GET调用没有任何body,就解决了这个问题。