如何在 Gmail 上下文小工具中发出 HTTP POST 请求?

How to make an HTTP POST request in Gmail Contextual Gadget?

我正在开发 Gmail 上下文小工具,现在我遇到了 Post Http 通信问题。我对 get 请求没有任何问题,这是我的 get 请求代码:

var mydata = { id: 10, name: 'sample1'};

var params = {};
var url = "https://myserver/handler/sample.ashx" + "?" + gadgets.io.encodeValues(mydata);
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
params[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType.SIGNED;
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;

gadgets.io.makerequest(url,callback,params);

但是当我需要发出 post 请求时,我在服务器端获取 mydata 时遇到了问题。我检查了 request.Params、request.QueryString、request.Form 中的所有变量。空无一物!

var mydata = { id: 10, name: 'sample1'};

var params = {};
var url = "https://myserver/handler/sample.ashx";
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
params[gadgets.io.RequestParameters.AUTHORIZATION]=gadgets.io.AuthorizationType.SIGNED;
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
params[gadgets.io.RequestParameters.POST_DATA] = mydata;


gadgets.io.makerequest(url,callback,params);

我的问题是什么?

使用gadgets.io.encodeValues设置POST_DATA

params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postdata);

或使用此模式隔离您的数据:

 params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues({
            Gadget_Post_DATA: gadgets.json.stringify(mydata)
        });;