【问题标题】:Post request body google api发布请求正文 google api
【发布时间】:2018-02-23 17:14:49
【问题描述】:

我正在尝试使用 google api 在 gmail 中创建草稿。

授权后,我无法使用 POST 发送请求正文。这是我的代码的简化版本。

var token = hash[1].split('=')[1]; // getting token
var body = "some text";
var base64message = Base64.encode(body); //uses base64 library to encode message
var params ={
    "message": {
        "raw": base64message
    }
}
var request = new XMLHttpRequest();
request.onload = function(){
    console.log(this.responseText); // parseError
}

request.open('POST','https://www.googleapis.com/gmail/v1/users/me/drafts?access_token='+token,true);
request.send(JSON.stringify(params));

解决了忘记这个:

request.setRequestHeader('Content-Type', 'application/json');

【问题讨论】:

    标签: javascript api google-api gmail-api


    【解决方案1】:

    代替:

    request.onload = function(){
        console.log(this.responseText); // parseError
    }
    

    使用onreadystatechange,然后询问if(this.readyState == 4 && this.status == 200){

    1. this.readyState == 4 表示请求完成或处理完毕
    2. this.status == 200 表示也成功了。

    .onload 是在 XMLHttpRequest 2 中添加的,而 onreadystatechange 从最初的规范就已经存在。 .onload 仅等于 this.readyState == 4

    所以您的代码将如下所示:

    var token = hash[1].split('=')[1]; // getting token
    var body = "some text";
    var base64message = Base64.encode(body); //uses base64 library to encode message
    var params ={
        "message": {
            "raw": base64message
        }
    };
    
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            console.log(this.responseText);
        }
    };
    
    request.open('POST','https://www.googleapis.com/gmail/v1/users/me/drafts?access_token='+token,true);
    request.send(JSON.stringify(params));
    

    【讨论】:

    • 谢谢,但这并不能解决问题。我的状态为 400,这就是为什么我改为 onload 以查看谷歌要说的内容。
    • @PenPen 400 表示请求格式错误。也就是说,客户端发给服务端的数据流不符合规则。
    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2012-08-31
    • 2020-01-09
    相关资源
    最近更新 更多