我正在尝试从Metals API获得响应,但是即使我可以使用URL获取API,也一直收到404错误。
public function valueFromApi(){
$accesskey = "123456";
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://metals-api.com/api/latest', [
'form_params' => [
'access_key' => $accesskey,
'base' => 'GBP',
'symbols' => 'XAU',]
]);
dd($response);
}
如果我尝试直接通过浏览器访问URL,那么它将起作用:
https://metals-api.com/api/latest?access_key=123456&base=GBP&symbols=XAU
我一定误解了参数的工作方式。任何建议表示赞赏。
答案 0 :(得分:1)
表单参数与查询参数不同。因此,您需要将参数设置为查询。如果您在浏览器中访问此文件,我希望它不是POST而是GET。
$response = $client->request('GET', 'https://metals-api.com/api/latest', [
RequestOptions::QUERY => [
'access_key' => $accesskey,
'base' => 'GBP',
'symbols' => 'XAU',
]
]);
我正在使用RequestOptions,这是硬编码字符串选项的语法糖,与'query'相同。
答案 1 :(得分:1)
如其docs中所指定,您需要定义常量
define("form_params", GuzzleHttp\RequestOptions::FORM_PARAMS );
然后您就可以使用代码了
$response = $client->request('POST', 'https://metals-api.com/api/latest', [
'form_params' => [
'access_key' => $accesskey,
'base' => 'GBP',
'symbols' => 'XAU',]
]);