Laravel 7调用外部API POST请求报错:Response::setContent()参数异常
Laravel 7 POST请求报错:Response::setContent()参数类型错误
错误原因
你遇到的报错是因为直接返回了$response->json()的结果——该方法返回的是stdClass对象,而Symfony的Response::setContent()方法仅接受字符串或null类型的参数,类型不匹配导致报错。
解决方案
1. 用Laravel响应助手包装结果
使用response()->json()函数将API返回的结果序列化为合法的JSON响应字符串,避免直接返回对象:
$response = Http::withOptions(['debug' => true]) ->asForm() ->withToken('mybearertoken') ->post('theurl', [ 'tracking' => $getcolisdetails->ref_order, 'state_id' => $newStatus, 'content' => $content ]); // 用response()->json()包装后返回 return response()->json($response->json());
2. (可选)将对象转为数组返回
如果$response->json()返回的是对象,也可以先强制转为数组再包装:
return response()->json((array)$response->json());
3. 检查请求参数类型
另外确认$content变量是字符串类型,因为asForm()发送的是表单数据,若$content是对象可能导致请求异常(Postman测试正常可能是因为手动传入了字符串),可以强制转换:
$content = (string)$content;
内容的提问来源于stack exchange,提问作者MADI
相关产品推荐
相关产品推荐

