“ 谷歌 API 消息 ” : “ 此 API 不支持解析表单编码的输入.".

" Google API message " : " This API does not support parsing form-encoded input. "

本文关键字:API 编码 输入 quot 表单 消息 谷歌 不支持      更新时间:2023-09-26

我编写了以下JavaScript来在Google中创建任务列表:

postData = {'title':'Netsuite List'};
access_token = 'xxxx';
url = 'https://www.googleapis.com/tasks/v1/users/@me/lists';
headers['Content-type'] = 'application/json';
headers['Authorization'] = 'Bearer ' + access_token;
headers['Content-length'] = 25; 
response = $$.requestURL(url, postData, headers, 'POST');

答复说:

{ "error": 
{ "errors": [ { "domain": "global", "reason": "parseError", "message": "This API does not support parsing form-encoded input." } ], "code": 400, "message": "This API does not support parsing form-encoded input." } 
}

可能的错误是什么?

不起作用

contentType: 'application/json; charset=UTF-8',

试试这个

var headers = { };
headers["Content-Type"] ="application/json ; charset=UTF-8"; 
//remove to parsing form-encoded input error
data:JSON.stringify( model),
//this use for remove to parse error

例:

$.ajax({
    type: 'Post',
    url: postUrl,
    headers: headers,
    dataType: 'json',//not required in some case
    data:JSON.stringify( model),                
    success: function (data, sts) {
        alert('success');
    },
    error: function (err, sts) {
        var msg;
    }
});

您发送的数据如下:

title=Netsuite%20List

但是Google API等待JSON:

{ "title": "Netsuite List" }

尝试向requestURL方法提供JSON.stringify()输出:

postData = JSON.stringify({'title':'Netsuite List'});          // <-- Added JSON.stringify
access_token = 'xxxx';
url = 'https://www.googleapis.com/tasks/v1/users/@me/lists';
headers['Content-type'] = 'application/json';
headers['Authorization'] = 'Bearer ' + access_token;
headers['Content-length'] = 25; 
response = $$.requestURL(url, postData, headers, 'POST');

此外,最好绕过您使用$$对象的文档或源,并检查它如何支持发送 JSON 数据。

jQuery.ajax({
    url: "https://www.googleapis.com/tasks/v1/users/@me/lists",
    method: "POST",
    data: JSON.stringify({ /* your object */ }),
    dataType: "json",
    beforeSend: (xhr) => {
        xhr.setRequestHeader("Content-Type", "application/json");
    },
    //...

或:

jQuery.ajax({
    url: "https://www.googleapis.com/tasks/v1/users/@me/lists",
    method: "POST",
    data: JSON.stringify({ /* your object */ }),
    dataType: "json",
    contentType: "application/json",
    //...