«

PHP扩展 Guzzlehttp一次使用体验

时间:2023-3-2 09:52     作者:wen     分类: PHP


当时发送请求后,调用$response->getBody()一直返回空,后来改成用curl请求,发现接口没有问题,能正常返回,改用guzzle之后就不行了,后来发现$response->getBody()返回一个对象,对象经过json_encode函数之后会变成{}空字符串导致出现问题, 改用$response->getBody()->getContents(),就解决问题了

require_once 'vendor/autoload.php';

$client = new  GuzzleHttp\Client();
$url = "xxx";
$response = $client->get($url);

if ($response->getStatusCode() == 200) {
    $res = $response->getBody()->getContents();
    myJson(0, 'OK',  json_decode($res, true));
} else {
    myJson(1, 'ERROR');
}

/**
 * 返回JSON数据
 */
function myJson($code, $msg, $data = [])
{
    header("content-type:application/json");
    echo json_encode(['code' => $code, 'msg' => $msg, 'data' => $data], JSON_UNESCAPED_UNICODE);
    exit;
}
$client = new \GuzzleHttp\Client();
$res = $client->post('xxx',[
    'headers' => [
    'Content-Type' => 'application/x-www-form-urlencoded',
],
'form_params' => [
    'out_trade_no' => "$no"
]
]);
return json_decode($res->getBody()->getContents(), true);