php cURL错误18:尝试了所有方法,但在连接Xero API时仍出现此错误

ia2d9nvy  于 2023-08-02  发布在  PHP
关注(0)|答案(1)|浏览(220)

我正在开发一个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:**传输已关闭,剩余未完成的读取数据 *
yqhsw0fo

yqhsw0fo1#

我最近遇到了同样的问题,得到间歇性的cURL错误18错误,尽管Xero报告说,呼叫成功地通过了他们的结束。快把我逼疯了,但终于找到了解决办法。
尝试在受影响的GET请求的头中设置以下内容:
第一个月
因此,根本不为Content-Length指定任何值,但仍将其包含在标头中。通过这种方式告诉Xero我的GET调用没有任何body,就解决了这个问题。

相关问题