【问题标题】:" Google API message " : " This API does not support parsing form-encoded input. "" Google API message " : "此 API 不支持解析表单编码输入。"
【发布时间】:2013-06-22 12:17:51
【问题描述】:

我编写了以下 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." } 
}

可能的错误是什么?

【问题讨论】:

    标签: javascript google-api google-tasks-api


    【解决方案1】:

    不工作

    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;
        }
    });
    

    【讨论】:

      【解决方案2】:

      您发送的数据如下:

      title=Netsuite%20List
      

      但 Google API 等待JSON

      { "title": "Netsuite List" }
      

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

      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 数据。

      【讨论】:

        【解决方案3】:
        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",
            //...
        

        【讨论】:

          猜你喜欢
          • 2013-10-16
          • 2015-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-25
          相关资源
          最近更新 更多