这里的答案将真正取决于 API 的预期。让我们假设,API 期望在请求内容中以 JSON 形式发送的密码和用户名。示例 http 请求如下所示:
POST /login HTTP/1.1
Content-Type: application/json
{
"username": "bugsBunny",
"password": "wh4tsUpD0c"
}
要使用 Buzz 执行此操作,应该可以:
$jsonPayload = json_encode([
‘username’ => ‘bugsBunny’,
‘password’ => ‘wh4tsUpD0c
]);
$headers = ['Content-Type', 'application/json'];
$response = Buzz::post('http://api.website.com/login', $headers, $jsonPayload);
如果您尝试在给定网站上提交表单,则不应使用上述方法。而是使用 Buzz 的内置表单方法,该方法将附加正确的标题。
use Buzz\Message\Form;
$request = new Form(Form::METHOD_POST, ‘login’, ‘api.website.com’);
$request->setFields([
‘username’ => ‘bugsBunny’,
‘password’ => ‘wh4tsUpD0c’
]);
$response = new Buzz\Message\Response();
$client = new Buzz\Client\Curl();
$client->send($request, $response);
在旁注中,我建议不要使用这个库。正如您所说,该库是 Buzz 的 Laravel 集成。这里的问题是,作者应该将 Buzz 作为 Composer 中列出的依赖项,而不是直接包含 Buzz 源。这可以防止 Buzz 的更新进入此项目。你可以在实际的Buzz repo上看到,最后一次提交是 29 天前。此外,如果另一个包正在使用 Buzz 并由 composer 正确包含它,则 composer 将安装这两个包。但是当创建 Buzz 实例时,您无法确定正在加载哪个版本。你应该只使用 Buzz,它可以在packagist上找到。
// assuming $headers and $jsonPayload are the same as in previous example.
$browser = new Buzz\Browser();
$response = $browser->post('http://api.website.com/login', $headers, $jsonPayload);