gpt4 book ai didi

php - 如何使用 Guzzle PHP 获取 SENT 数据的主体?

转载 作者:IT王子 更新时间:2023-10-28 23:52:16 24 4
gpt4 key购买 nike

我在 PHP 中使用 Guzzle (v6.1.1) 向服务器发出 POST 请求。它工作正常。我正在添加一些日志记录功能来记录发送和接收的内容,但我不知道如何获取 Guzzle 发送到服务器的数据。我可以很好地获得响应,但是如何获得已发送数据? (这将是 JSON 字符串。)

这是我的代码的相关部分:

$client = new GuzzleHttp\Client(['base_uri' => $serviceUrlPayments ]);
try {
$response = $client->request('POST', 'Charge', [
'auth' => [$securenetId, $secureKey],
'json' => [ "amount" => $amount,
"paymentVaultToken" => array(
"customerId" => $customerId,
"paymentMethodId" => $token,
"publicKey" => $publicKey
),
"extendedInformation" => array(
"typeOfGoods" => $typeOfGoods,
"userDefinedFields" => $udfs,
"notes" => $Notes
),
'developerApplication'=> $developerApplication
]
]);

} catch (ServerErrorResponseException $e) {
echo (string) $e->getResponse()->getBody();
}


echo $response->getBody(); // THIS CORRECTLY SHOWS THE SERVER RESPONSE
echo $client->getBody(); // This doesn't work
echo $client->request->getBody(); // nor does this

任何帮助将不胜感激。我确实尝试在 Guzzle 源代码中查找类似于 getBody() 的函数,它可以处理请求,但我不是 PHP 专家,所以我没有想出任何有用的东西。我也在谷歌上搜索了很多,但发现只有人们在谈论从服务器取回响应,这对我来说没有问题。

最佳答案

您可以通过创建 Middleware 来完成这项工作.

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use Psr\Http\Message\RequestInterface;

$stack = HandlerStack::create();
// my middleware
$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
$contentsRequest = (string) $request->getBody();
//var_dump($contentsRequest);

return $request;
}));

$client = new Client([
'base_uri' => 'http://www.example.com/api/',
'handler' => $stack
]);

$response = $client->request('POST', 'itemupdate', [
'auth' => [$username, $password],
'json' => [
"key" => "value",
"key2" => "value",
]
]);

然而,这是在接收响应之前触发的。你可能想做这样的事情:

$stack->push(function (callable $handler) {
return function (RequestInterface $request, array $options) use ($handler) {
return $handler($request, $options)->then(
function ($response) use ($request) {
// work here
$contentsRequest = (string) $request->getBody();
//var_dump($contentsRequest);
return $response;
}
);
};
});

关于php - 如何使用 Guzzle PHP 获取 SENT 数据的主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com