我尝试使用Guzzle与Laravel一起使用Vertifire API发布帖子请求。根据Vertifire的文档,最小的帖子请求应该是:
curl https://api50.vertifire.com/v2/serp/url \
--header "X-Vertifire-Token: MY TOKEN HERE" \
--data terms[0][term]=videos \
--data terms[0][url]=wikipedia.org \
--data terms[0][sep][search_engine]=1
按照Guzzle的文档,首先我创建了一个客户端:
$client = new Client(['base_uri' => 'https://api50.vertifire.com/']);
我一直坚持提出实际要求:
$request = $client->post('v2/serp/url', [
'headers' => config('guzzleapi.vertifire_auth'), // Laravel's config file with token
'data' => [
$terms[0]['term'] = 'videos',
$terms[0]['url'] = 'wikipedia.org',
$terms[0]['sep']['search_engine'] = 1,
]
]);
导致错误的结果是:
Client error: `POST https://api50.vertifire.com/v2/serp/url` resulted in a `400 Bad Request`
response: {"status":0,"error":{"code":3001,"message":"Missing term"}}
显然,我搞砸了将数据传递给请求的方式......如何使用Guzzle将特定数据或数据数组传递给帖子请求?任何帮助都会非常感激,因为我是这个领域的新秀。
谢谢!
已解决/解决方案
将数据传递给请求的正确方法似乎是扩展数据的数据如下:
$ranks_request = $client->post('v2/serp/url', [
'headers' => config('guzzleapi.vertifire_auth'),
'form_params' => [
'terms' => [
[
'term' => 'videos',
'url' => 'wikipedia.org',
'sep' => [
'search_engine' => 1,
],
],
],
],
]);
答案 0 :(得分:0)
尝试将您的请求更改为
$request = $client->post('v2/serp/url', [
'headers' => [
'X-Vertifire-Token' => config('guzzleapi.vertifire_auth'),
]
'form_params' => [
'term' => 'videos',
'url' => 'wikipedia.org',
'sep' => 1,
]
]);
让我知道它是否有效,或者你得到了什么回应。