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

Était-ce utile?

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/"}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top