JavaScript向googleapi发送JSON
我是Google API(Calendar V3)的新手,我通过获得令牌获得了授权。我正在使用get请求获取用户日历Id,我想在其中发送POST请求,以便将事件添加到日历中 以下是我的工作内容:JavaScript向googleapi发送JSON,javascript,json,google-api,Javascript,Json,Google Api,我是Google API(Calendar V3)的新手,我通过获得令牌获得了授权。我正在使用get请求获取用户日历Id,我想在其中发送POST请求,以便将事件添加到日历中 以下是我的工作内容: var json_body = { "end": { "date": "2013-09-06" }, "start": { "date": "2013-09-06"
var json_body = {
"end": {
"date": "2013-09-06"
},
"start": {
"date": "2013-09-06"
},
"summary": "test event 1"
};
var json_string = JSON.stringify(json_body);
http.setRequestHeader("Content-Type", "application/json");
http.setRequestHeader("Authorization","Bearer " + access_key);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert("in here");
alert(http.responseText);
}
}
http.send(json_string);
我得到的答复是:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message": "Parse Error"
}
}
我知道access_key authorization标头是正确的,因为它没有给我授权错误。我已经在谷歌API浏览器工具中运行了这个JSON结构,它正确地将一个元素添加到我的日历中。我假设我构建JSON的方式是不正确的。有什么想法吗
先谢谢你
编辑:
我找到了正确的解决办法。我在url请求中错误地使用了一个参数。上面的代码可以在以后有人偶然发现时使用。您似乎发送的是json_正文,而不是这一行的json_字符串
var json_string=json.stringify(json_body)代码>。这段代码正确吗?对不起,因为我在测试它,所以把stringify放在那里了。如果我使用stringify版本,我会得到一个404 Not found错误,而不是400 parse errorOK,明白了!您能否详细说明您将请求发送到的位置?即您要发布到的URL。我猜它的格式是:POSThttps://www.googleapis.com/calendar/v3/calendars/{YOUR_CALENDAR\u ID}/events?key={YOUR_API\u key}
。这是正确的吗?这是正确的,尽管我保留了“key=”部分,因为我认为这是用于应用程序的,我的Get请求不需要这个。我正在使用访问键获得访问权限。它工作正常!我发现我在复制url中的一个参数。作为参考,http.send(json_字符串)是正确的方法。