国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

使用guzzle進(jìn)行sendAsync請(qǐng)求,報(bào)錯(cuò)Error:Array to string

達(dá)達(dá)尼黑

問(wèn)題描述

使用post方法是OK的,使用sendAsync就報(bào)錯(cuò)
PS:看上去是不是Guzzle的返回在webman框架的http類中解析有問(wèn)題?

程序代碼

post方法的代碼

$client = new Client();
$response = $client->post($url, [
'headers' => [
'Content-Type' => 'application/json;charset=utf-8',
],
'json' => [
'grant_type' => 'authorization_code',
'client_id' => $this->config['app_Id'],
'client_secret' => $this->config['app_Scrt'],
'code' => $params['code']
],
]);

sendAsync方法

$headers = [
'Content-Type' => 'application/json;charset=utf-8'
];
$body = json_encode([
'grant_type' => 'authorization_code',
'client_id' => $this->config['app_Id'],
'client_secret' => $this->config['app_Scrt'],
'code' => $params['code']
]);
$request = new \GuzzleHttp\Psr7\Request('POST', $url, $headers, $body);
// $data = null;
$response = $client->sendAsync($request)->wait();

報(bào)錯(cuò)信息

ErrorException: Array to string conversion in /***/vendor/workerman/workerman/src/Protocols/Http.php:188
Stack trace:
#0 /***/vendor/workerman/workerman/src/Protocols/Http.php(188): {closure}(2, 'Array to string...', '/data/html/cfcs...', 188)
#1 /***/vendor/workerman/workerman/src/Connection/TcpConnection.php(426): Workerman\Protocols\Http::encode(Array, Object(Workerman\Connection\TcpConnection))
#2 /***/vendor/workerman/webman-framework/src/App.php(747): Workerman\Connection\TcpConnection->send(Array)
#3 /***/vendor/workerman/webman-framework/src/App.php(662): Webman\App::send(Object(Workerman\Connection\TcpConnection), Array, Object(support\Request))
#4 /***/vendor/workerman/webman-framework/src/App.php(156): Webman\App::findRoute(Object(Workerman\Connection\TcpConnection), '/Api/getFXUserA...', 'POST/Api/getFXU...', Object(support\Request), 200)
#5 /***/vendor/workerman/workerman/src/Connection/TcpConnection.php(748): Webman\App->onMessage(Object(Workerman\Connection\TcpConnection), Object(support\Request))
......
worker[webman:7306] exit with status 64000

截圖報(bào)錯(cuò)信息里報(bào)錯(cuò)文件相關(guān)代碼

操作系統(tǒng)及workerman/webman等框架組件具體版本

Linux ec54b45102ad 6.1.21-v8+
"workerman/webman-framework": "^1.6.8"

已解決

1.原因:
飛書對(duì)于code非0(code為0,表示數(shù)據(jù)請(qǐng)求正常,并且響應(yīng)碼為200)響應(yīng)碼為40x 50x,
導(dǎo)致Guzzle拋出異常,只能在GuzzleRequestExecption中進(jìn)行處理,使用系統(tǒng)自帶的RequestException是捕獲不到的
2.處理:

        ......
        } catch (RequestException $e) {
            // 處理 Guzzle 請(qǐng)求異常
            if ($e->hasResponse()) {
                $response = $e->getResponse();
                $statusCode = $response->getStatusCode();

                // 檢查響應(yīng)碼
                if ($statusCode === 400) {
                    // 解析400的響應(yīng)
                    $errorData = json_decode($response->getBody(), true);
                    // 處理錯(cuò)誤數(shù)據(jù)
                    return json([
                        'code' => 60006,
                        'msg' => '響應(yīng)碼' . $statusCode . ':'. $errorData['error'] . ':' . $errorData['error_description']
                    ]);
                }
            } else {
                // 處理其他異常
                return json([
                    'code' => 60007,
                    'msg' => '飛書響應(yīng)與GClient解析其他錯(cuò)誤'
                ]);
            }
497 1 0
1個(gè)回答

walkor 打賞

控制器返回了數(shù)組,應(yīng)該返回字符串或者response對(duì)象

  • 達(dá)達(dá)尼黑 2025-02-10

    報(bào)錯(cuò)就在“$response = $client->sendAsync($request)->wait();”,它返回了數(shù)組然后到了框架的http.php的encode方法,修改Guzzle那邊response的類型?
    接觸webman 和guzzle都還不是很久,請(qǐng)指教

  • walkor 2025-02-10

    這句不會(huì)報(bào)錯(cuò),return $response; 會(huì)報(bào)錯(cuò),因?yàn)?$response 是數(shù)組,webman不支持返回?cái)?shù)組,你可以轉(zhuǎn)換為json組字符串,代碼類似 return json($response);

  • 達(dá)達(dá)尼黑 2025-02-10

    好的,謝謝

  • 達(dá)達(dá)尼黑 2025-02-11

    我發(fā)現(xiàn)是這樣的,其實(shí)跟Guzzle的post或sendAsync無(wú)關(guān),跟返回的數(shù)據(jù)有關(guān)。以我的需求為例,我是向飛書服務(wù)端api請(qǐng)求數(shù)據(jù):發(fā)送code請(qǐng)求accesstoken這樣 一個(gè)接口。如果正常獲取,飛書給我的是響應(yīng)碼200,guzzle能正常解析,如果響應(yīng)碼是400,guzzle就不能正常解析。 但是webman后臺(tái)打印的日志是指向Http.php 188行,但這里打印echo是沒(méi)用的,有點(diǎn)悶掉了

  • 達(dá)達(dá)尼黑 2025-02-11

    發(fā)現(xiàn)問(wèn)題了。要對(duì)GuzzleHttp\Exception\RequestException;進(jìn)行處理。 GuzzleHttp對(duì)響應(yīng)碼是400的當(dāng)成異常了,就拋出了,之前還是用的webman框架的RequestException進(jìn)行處理,沒(méi)捕獲到

??