Php 如何在Laravel上为Buzz HTTP客户端的Post请求添加表单数据?

Php 如何在Laravel上为Buzz HTTP客户端的Post请求添加表单数据?,php,http,laravel,buzz,Php,Http,Laravel,Buzz,我在用拉威尔 我在将表单数据添加到POST请求时遇到问题,因为它没有在wiki/文档中指定 下面列出了发送请求的两种方式 例1: $response = Buzz::post('http://api.website.com/login'); //how do I add a "username", and "password" field in my POST request? echo $response; echo $response->getContent; 例2: $reques

我在用拉威尔

我在将表单数据添加到POST请求时遇到问题,因为它没有在wiki/文档中指定

下面列出了发送请求的两种方式

例1:

$response = Buzz::post('http://api.website.com/login');
//how do I add a "username", and "password" field in my POST request?
echo $response;
echo $response->getContent;
例2:

$request = new Buzz\Message\Request('POST', '/', 'http://google.com');
$response = new Buzz\Message\Response();
//how do I add a "username", and "password" field in my POST request?    
$client = new Buzz\Client\FileGetContents();  
$client->send($request, $response);

echo $request;  
echo $response;

这里的答案将真正取决于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的更新进入此项目。你可以看到,实际上,上一次提交是在29天前。另外,如果另一个软件包正在使用Buzz并由composer正确地包含它,composer将安装这两个软件包。但创建Buzz实例时,您无法确定加载的是哪个版本。你应该只使用Buzz,它可以在上找到


这里的答案将真正取决于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的更新进入此项目。你可以看到,实际上,上一次提交是在29天前。另外,如果另一个软件包正在使用Buzz并由composer正确地包含它,composer将安装这两个软件包。但创建Buzz实例时,您无法确定加载的是哪个版本。你应该只使用Buzz,它可以在上找到


这里的答案将真正取决于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的更新进入此项目。你可以看到,实际上,上一次提交是在29天前。另外,如果另一个软件包正在使用Buzz并由composer正确地包含它,composer将安装这两个软件包。但创建Buzz实例时,您无法确定加载的是哪个版本。你应该只使用Buzz,它可以在上找到


这里的答案将真正取决于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的更新进入此项目。你可以看到,实际上,上一次提交是在29天前。另外,如果另一个软件包正在使用Buzz并由composer正确地包含它,composer将安装这两个软件包。但创建Buzz实例时,您无法确定加载的是哪个版本。你应该只使用Buzz,它可以在上找到


我真傻,在问之前没有先读代码

表单数据实际上是在函数的第三个参数上传递的。尽管它只接受字符串,但不要忘记对数据进行json编码

Buzz Class

public function post($url, $headers = array(), $content = '')
{
....
....
}

Buzz::post($url, array(), json_encode(array('Username'=>'usernamexx','Password'=>'p@$$w0rD')) );

我真傻,在问之前没有先读代码

表单数据实际上是在函数的第三个参数上传递的。尽管它只接受字符串,但不要忘记对数据进行json编码

Buzz Class

public function post($url, $headers = array(), $content = '')
{
....
....
}

Buzz::post($url, array(), json_encode(array('Username'=>'usernamexx','Password'=>'p@$$w0rD')) );

我真傻,在问之前没有先读代码

表单数据实际上是在函数的第三个参数上传递的。尽管它只接受字符串,但不要忘记对数据进行json编码

Buzz Class

public function post($url, $headers = array(), $content = '')
{
....
....
}

Buzz::post($url, array(), json_encode(array('Username'=>'usernamexx','Password'=>'p@$$w0rD')) );

我真傻,在问之前没有先读代码

表单数据实际上是在函数的第三个参数上传递的。尽管它只接受字符串,但不要忘记对数据进行json编码

Buzz Class

public function post($url, $headers = array(), $content = '')
{
....
....
}

Buzz::post($url, array(), json_encode(array('Username'=>'usernamexx','Password'=>'p@$$w0rD')) );

嘿,就在我发现答案之前!!无论如何,谢谢@LoganBailey的帮助谢谢你的明确答案!对于这个@LoganBailey,你有其他选择吗?是的,我也注意到有一段时间没有提交。感谢您指出有关composer的问题。我建议使用正常的Buzz,而不使用Laravel集成。额外的好处