发布请求正文google api

时间:2017-09-14 16:09:18

标签: javascript api google-api gmail-api

我正在尝试使用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');

1 个答案:

答案 0 :(得分: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表示它也成功了。
  3. 在XMLHttpRequest 2中添加了

    .onload,而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));