有人知道用Guzzle发布JSON的正确方法吗?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
我从服务器得到一个内部服务器错误响应。它使用Chrome邮差工作。
有人知道用Guzzle发布JSON的正确方法吗?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
我从服务器得到一个内部服务器错误响应。它使用Chrome邮差工作。
当前回答
这对我来说很有效(使用Guzzle 6)
$client = new Client();
$result = $client->post('http://api.example.com', [
'json' => [
'value_1' => 'number1',
'Value_group' =>
array("value_2" => "number2",
"value_3" => "number3")
]
]);
echo($result->getBody()->getContents());
其他回答
我使用下面的代码,工作非常可靠。
JSON数据在参数$request中传递,特定的请求类型在变量$searchType中传递。
该代码包含一个陷阱,用于检测和报告不成功或无效的调用,然后返回false。
如果调用成功,json_decode ($result->getBody(), $return=true)返回一个结果数组。
public function callAPI($request, $searchType) {
$guzzleClient = new GuzzleHttp\Client(["base_uri" => "https://example.com"]);
try {
$result = $guzzleClient->post( $searchType, ["json" => $request]);
} catch (Exception $e) {
$error = $e->getMessage();
$error .= '<pre>'.print_r($request, $return=true).'</pre>';
$error .= 'No returnable data';
Event::logError(__LINE__, __FILE__, $error);
return false;
}
return json_decode($result->getBody(), $return=true);
}
这适用于我的Guzzle 6.2:
$gClient = new \GuzzleHttp\Client(['base_uri' => 'www.foo.bar']);
$res = $gClient->post('ws/endpoint',
array(
'headers'=>array('Content-Type'=>'application/json'),
'json'=>array('someData'=>'xxxxx','moreData'=>'zzzzzzz')
)
);
根据文档guzzle做json_encode
简单地使用它将工作
$auth = base64_encode('user:'.config('mailchimp.api_key'));
//API URL
$urll = "https://".config('mailchimp.data_center').".api.mailchimp.com/3.0/batches";
//API authentication Header
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Basic '.$auth
);
$client = new Client();
$req_Memeber = new Request('POST', $urll, $headers, $userlist);
// promise
$promise = $client->sendAsync($req_Memeber)->then(function ($res){
echo "Synched";
});
$promise->wait();
解决方案$客户端->请求('POST',…
对于那些使用$client->请求的人,这是如何创建JSON请求的:
$client = new Client();
$res = $client->request('POST', "https://some-url.com/api", [
'json' => [
'paramaterName' => "parameterValue",
'paramaterName2' => "parameterValue2",
]
'headers' => [
'Content-Type' => 'application/json',
]
]);
Guzzle JSON请求参考
来自@user3379466的答案可以通过设置$data来工作,如下所示:
$data = "{'some_key' : 'some_value'}";
我们的项目需要的是将一个变量插入到json字符串中的数组中,我这样做如下(如果这有助于任何人):
$data = "{\"collection\" : [$existing_variable]}";
因此,与$existing_variable是,说,90210,你得到:
echo $data;
//{"collection" : [90210]}
另外值得注意的是,你可能还想设置'Accept' => 'application/json'以防你碰到的端点关心这类事情。