使用Guzzle指定POST请求的原始主体

时间:2016-02-09 13:54:08

标签: php http guzzle

使用Guzzle(版本3),我想在" raw"中指定POST请求的正文。模式。我现在正在尝试这个:

$guzzleRequest = $client->createRequest(
    'POST',
    $uri,
    null,
    'un=one&deux=two'
);

但它有点不起作用。如果我转储$guzzleRequest我可以看到postFields->data为空。之后使用$guzzleRequest->setBody()并没有帮助。

但是,如果我将主体指定为['un'=>'one', 'deux'=>'two'],它将按预期工作。

如何将请求正文指定为'un=one&deux=two'

1 个答案:

答案 0 :(得分:0)

首先,我强烈建议您升级到Guzzle 6,因为Guzzle 3已被弃用且EOL。

自从我使用Guzzle 3以来已经很长时间了,但我相信你想要以下内容:

$request = $client->post(
    $uri,
    $header = [],
    $params = [
        'un' => 'one',
        'deux' => 'two',
]);

$response = $request->send();

Guzzle会自动设置Content-Type标题。

Post Request Documentation提供了更多信息。

回应你的评论:

$request = $client->post(
    $uri,
    $headers = ['Content-Type' => 'application/x-www-form-urlencoded'],
    EntityBody::fromString($urlencodedstring)
)

为此,请参考:EntityBody SourceRequestFactory::create()