如何让 GuzzleHttp 客户端正确发送 POST 请求?

问题描述

根据 GuzzleHttp/Guzzle v7 (https://docs.guzzlephp.org/en/stable/quickstart.html#sending-form-fields) 的文档,应该可以选择使用这两个函数向 URL(例如 http://localhost/form.PHP)发送常规 POST 请求...

所以我的 form.PHP 看起来像这样:

<?PHP
var_dump([
    'REQUEST' => $_REQUEST,'GET'     => $_GET,'POST'    => $_POST,]);

还有这样的 Guzzle-Code:

<?PHP

require __DIR__ . '/vendor/autoload.PHP';

use GuzzleHttp\Client;

$client = new GuzzleHttp\Client([
    'base_uri' => 'http://localhost',]);

$r1 = $client->post( '/form.PHP',[
    'json' => [
        'lorem' => 'ipsum',]
]);

echo $r1->getBody()->getContents() . "\n\n============\n\n";

$r2 = $client->request( 'POST','/form.PHP',]
]);

echo $r2->getBody()->getContents();

... 运行 guzzle 代码的结果显示

array(3) {
  ["REQUEST"]=>
  array(0) {
  }
  ["GET"]=>
  array(0) {
  }
  ["POST"]=>
  array(0) {
  }
}


============

array(3) {
  ["REQUEST"]=>
  array(0) {
  }
  ["GET"]=>
  array(0) {
  }
  ["POST"]=>
  array(0) {
  }
}

我错过了什么/搞砸了什么? ...

浏览器中对 http://localhost/form.PHP?asdf 的请求导致(正确的)响应:

array(3) {
  ["REQUEST"]=>
  array(1) {
    ["asdf"]=>
    string(0) ""
  }
  ["GET"]=>
  array(1) {
    ["asdf"]=>
    string(0) ""
  }
  ["POST"]=>
  array(0) {
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)