Guzzle 400 错误请求
Guzzle 400 Bad Request
我在执行 POST 请求时遇到以下错误:
Client error: POST http://api.hitbox.tv/auth/login
resulted in a 400 Bad Request
response: {"success":true,"error":false,"error_msg":"auth_failed"}
我不确定,是不是因为我的 guzzle 代码有问题
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
$client = new Client(["base_uri"=>"http://api.hitbox.tv/"]);
$data = ["login"=>"myId","pass"=>"mypassword","rememberme"=>"",];
try{
$response = $client->request("POST","auth/login",["form-params"=>$data,"content-type"=>"application/x-www-form-urlencoded"]);
}
catch(ClientException $e){
echo $e->getMessage();
}
catch(InvalidArgumentException $e){
echo $e->getMessage();
}
var_dump(json_decode($response,true));
我已经尝试使用 api 和 Javascript XMLHttpRequest 到 POST 同一组数据,我得到了成功的结果。
var xmlhttp;
var data = '{"login":"myId","pass":"myPassword","rememberme":""}';
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status == 200){
return xmlhttp.responseText;
}
xmlhttp.open('POST','https://api.hitbox.tv/auth/login',false);
xmlhttp.send(data);
您正在发送两个不同的请求。使用 JavaScript,您可以在请求正文中将数据作为 JSON 发送。但是,对于 Guzzle,您使用的是格式参数,这是一种不同的格式。
要解决此问题,只需将 form-params
键替换为 json
并删除 "content-type"=>"application/x-www-form-urlencoded"
。
我在执行 POST 请求时遇到以下错误:
Client error:
POST http://api.hitbox.tv/auth/login
resulted in a400 Bad Request
response: {"success":true,"error":false,"error_msg":"auth_failed"}
我不确定,是不是因为我的 guzzle 代码有问题
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
$client = new Client(["base_uri"=>"http://api.hitbox.tv/"]);
$data = ["login"=>"myId","pass"=>"mypassword","rememberme"=>"",];
try{
$response = $client->request("POST","auth/login",["form-params"=>$data,"content-type"=>"application/x-www-form-urlencoded"]);
}
catch(ClientException $e){
echo $e->getMessage();
}
catch(InvalidArgumentException $e){
echo $e->getMessage();
}
var_dump(json_decode($response,true));
我已经尝试使用 api 和 Javascript XMLHttpRequest 到 POST 同一组数据,我得到了成功的结果。
var xmlhttp;
var data = '{"login":"myId","pass":"myPassword","rememberme":""}';
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status == 200){
return xmlhttp.responseText;
}
xmlhttp.open('POST','https://api.hitbox.tv/auth/login',false);
xmlhttp.send(data);
您正在发送两个不同的请求。使用 JavaScript,您可以在请求正文中将数据作为 JSON 发送。但是,对于 Guzzle,您使用的是格式参数,这是一种不同的格式。
要解决此问题,只需将 form-params
键替换为 json
并删除 "content-type"=>"application/x-www-form-urlencoded"
。