根据 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', [
'json' => [
'lorem' => 'ipsum',
]
]);
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) {
}
}