Utilisation de XMLHTTPQUEST pour raccourcir une URL via l'API de raccourcisseur de Google
-
12-12-2019 - |
Question
J'ai essayé de faire cela via JQuery / Ajax, mais cela ne fonctionnait pas, alors je pensais que je revenais à un XMLHTTPQUEST normal.Malheureusement, cela ne fonctionne toujours pas (même problème).
Voici les documents pour Demande de publication de Google .Et voici mon code:
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "https://www.googleapis.com/urlshortener/v1/url", true);
xmlHttp.setRequestHeader("Content-Type", "application/json");
var url = "longUrl=" + encodeURIComponent("http://www.google.com/");
console.log(url);
xmlHttp.send(url);
"URL" est envoyé à la console comme suit: longurl= http% 3a% 2f% 2fwww.google.com% 2f
La réponse est:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message": "Parse Error"
}
}
Quelqu'un voit-il ce que je fais mal?
Merci d'avance!
Edit: ajouté pour @greg - afin que vous puissiez voir que je am suivez la spécification de Google lorsque j'utilise jQuery - qui donne la même erreur exacte.
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: { "longUrl": "http://www.google.com/" },
url: "https://www.googleapis.com/urlshortener/v1/url",
success: function(data) {
//do something with the shortened url json data
//console.log(data);
}
});
La solution
Voici la solution (le commentaire de @greg m'a pointé dans la bonne direction).
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "https://www.googleapis.com/urlshortener/v1/url", true);
xmlHttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
var req = new Object();
req.longUrl = "http://www.google.com/";
var jsonStr = JSON.stringify(req);
xmlHttp.send(jsonStr);
Autres conseils
Vous ne suivez pas la spécification que Google fournit.Vous devriez envoyer un objet JSON comme si:
{"longUrl": "http://www.google.com/"}