给定参数时API错误没有参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给定参数时API错误没有参数相关的知识,希望对你有一定的参考价值。

这是我得到的错误,因为您可以看到URL中有一个参数,但错误表明没有给出任何参数。有人可以帮帮我吗?

客户端错误:PUT https://webapi.teamviewer.com/api/v1/devices/d38237721?alias=laptop-test导致400 Bad Request响应:{“error”:“invalid_request”,“error_description”:“没有给出参数。”,“error_code”:1}

这是我的代码

public function update($device_id, $options)
{
    $token = 'thereisatokenhere';

    $client = new Client(['base_uri' => 'https://webapi.teamviewer.com/api/v1/']);
    $headers = [
        'Authorization' => 'Bearer ' . $token,
        'Accept-Language' => 'en-US',
        'Content-Type' => 'application/json'
    ];


    $response = $client->request('PUT', 'devices/' . $options['device_id'], [
        'headers'         => $headers,
        'form_params'            => [
            'alias' => $options['alias'],
        ],
    ]);

    $response = json_decode($response->getBody()->getContents(), true);

    $deviceIdsAPI = $response['devices'];

    return $deviceIdsAPI;
}

第2

 $request = new Request('PUT', 'https://webapi.teamviewer.com/api/v1/devices/' . $options['device_id'], ['alias' => $options['alias']]);
        $response = $client->send($request, ['timeout' => 2, 'headers' => $headers]);
答案

以下是Guzzle中PUT请求的示例:

$client->put('devices/' . $options['device_id'], [
    'body'            => [
        'alias' => $options['alias'],
        'other_field' => '123'
    ],
    'headers'         => $headers,
    'allow_redirects' => false,
    'timeout'         => 5
]);

更新:

在最新版本(Guzzle 6)中应该是这样的:

use GuzzleHttpPsr7Request;

$request = new Request('PUT', 'http://httpbin.org/put', ['test' => '123']);
$response = $client->send($request, ['timeout' => 2, 'headers' => $headers]);

请参阅this答案,这是官方的Guzzle documentation

以上是关于给定参数时API错误没有参数的主要内容,如果未能解决你的问题,请参考以下文章

android中需要google api客户端参数

删除行时,一个或多个必需参数没有给定值

在android中动态创建选项卡并使用传入的参数加载片段

Google PHP API 返回无效参数错误

如何解决TypeError get()使用get方法在Python请求中使用2个参数(给定3个)

当给定私有变量作为参数时,Path.join 抛出异常