我正在尝试通过GuzzleHTTP与外部应用程序(运行Laravel)进行通信,并且数据已正确发布并返回,但是我将发布的参数返回到正文响应中-这使得json_decode()无法正常工作正确地
有人知道如何解决此问题吗?无论是在GuzzleHTTP的文档还是Googling的文档中,我都找不到任何有关它的东西。
我猜想使用正则表达式是可以的,但是如果可能的话,我想使用一种不那么脆弱的方法。
我得到的响应如下(编码为json字符串):
string(39)“ aUnid%5B0%5D = 20005&aUnid%5B1%5D = 2008026” \ n“你好” 如您所见,在这种情况下,它会将我的参数以及结果(“ hello”)一起发布。
用于发布数据的代码是这样的:
$http = new \GuzzleHttp\Client([
'base_uri' => $baseUrl
]);
$uri = "/api/deliveries/read";
$response = $http->request("POST", $uri, [
'headers' => [
'Authorization' => "Bearer " . $accessToken,
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
GuzzleHttp\RequestOptions::JSON => [
'kmUnids' => [
20005, 2008026
]
],
'timeout' => 5
]);
echo $response->getBody();
外部应用程序中使用的代码如下:
/**
* @param Request $request
* @return JsonResponse
*/
public function getData (Request $request) : JsonResponse
{
$request->validate([
'kmUnids' => 'required|min:1|array'
]);
/** @noinspection PhpUndefinedFieldInspection */
$ids = $request->kmUnids;
return \Response::json(
"hello"
);
}
两个应用程序都在运行Laravel(5.7),并且正在使用Laravel Passport进行OAUTH2通信。
答案 0 :(得分:0)
您应该像这样解码返回结果:
$ return_result = json_decode($ response-> getBody()); $ data = $ res-> data;