使用PHP中的POST方法,POST字段和标头信息重定向到远程URL

时间:2019-11-05 13:17:12

标签: php laravel curl http-post guzzle

我刚遇到一种情况,我想将一些数据发布到远程URL。除了发布数据以及一些标头信息外,我还希望将用户重定向到该POST网址

在这里让我解释一下情况,我正在将第三方支付网关集成到我的Web应用程序中。我正在使用 Laravel 。一连串的API调用之后,该应用正在向该API提交付款明细。 API结果确实具有(相应银行的)第三方URL,我需要将其带给用户以完成身份验证过程。我有几个数据和标头信息。我已经尝试过Laravel Guzzle,但是像cURL一样,当我们提交POST数据时,我们实际上会将响应返回到我们的身边。但是没有被重定向。

如果我必须使用标准的html表单,该如何在其中发布标题信息。使用jQuery ajax可能也会引起相同的问题,我无法重定向用户。

我做了一些重新搜索并尝试了一些东西,

  1. 我大吃一惊,实际上我可以使用getBody方法将HTML内容显示给用户,但是HTML的解析方式不正确,图像被破坏了(因为它们在其中使用了相对路径网页)以及链接和按钮都无法将我带到所需的位置。
$response = $client->request('POST', $transactionResponse['redirectForm']['actionUrl'], [
    'headers' => $transactionResponse['redirectForm']['headers'],
    'form_params' => $transactionResponse['redirectForm']['content']
]);

echo $response->getBody();

我也使用CURLOPT_FOLLOWLOCATION指令尝试了cURL,但是它也会返回响应,而不重定向用户。

$post = [
    'username' => 'user1',
    'password' => 'passuser1',
    'gender'   => 1,
];

$ch = curl_init('http://localhost/laravel/arax_v1/paytm/callback');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'location: http://localhost/laravel/arax_v1/paytm/callback'
));

// execute!
$response = curl_exec($ch);

// close the connection, release resources used
curl_close($ch);

有人能更好地解决这个问题吗?

0 个答案:

没有答案