2017-09-14 3 views
0

J'essaie de créer un brouillon dans gmail en utilisant google api.Post demande corps google api

Après l'autorisation, je rencontre des problèmes lors de l'utilisation de POST pour envoyer un corps de requête. Voici une version simplifiée de mon code.

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

Résolu oublié ceci:

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

Répondre

1

Au lieu de:

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

Utilisez onreadystatechange après quoi vous demander if(this.readyState == 4 && this.status == 200){.

  1. this.readyState == 4 signifie que la demande est terminée ou traitée
  2. this.status == 200 signifie qu'il a également réussi.

.onload a été ajouté dans XMLHttpRequest 2 alors onreadystatechange a été autour depuis la spécification originale. .onload est égal à this.readyState == 4.

donc votre code ressemblera à ceci:

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)); 
+0

Merci, mais cela ne résout pas le problème. Je reçois le statut 400, c'est pourquoi j'ai changé pour onload afin de voir ce que google a à dire. – PenPen

+0

@PenPen 400 signifie que la demande a été malformée. En d'autres termes, le flux de données envoyé par le client au serveur n'a pas suivi les règles. – PredatorIWD