0

我正在尝试从我的 AIR ANDROID 应用程序中的操作脚本向 GCM 发出 HTTP 请求。我究竟做错了什么?我在这里遵循请求格式

我不断收到错误 400

var url:String = "https://android.googleapis.com/gcm/send";

var request:URLRequest = new URLRequest(url);

var rhArray:Array = new Array(new URLRequestHeader("Content-Type", "application/json"),new URLRequestHeader("Authorization", "key=MYAPIKEY"));
            request.requestHeaders = rhArray;

var msgData:String = JSON.stringify({"message":"holy crap message worked","title":"the message title here"});
var postData:String = JSON.stringify({"registration_ids":["THELONGREGISTRATIONIDOFTHEDEVICEIWANTTOMESSAGE"],"data":msgData});

request.data = postData;
request.method = URLRequestMethod.POST;

var urlLoader:URLLoader = new URLLoader();
urlLoader = new URLLoader();

urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler, false, 0, true);
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);

urlLoader.load(request);
4

2 回答 2

0

我也无法通过 400 HTTP 状态码。我尝试使用 brybam 的代码实现该功能,如答案中所述,400 代码意味着 http 请求的 JSON 部分无效。

替换 brybam 第一篇文章中的这两行:

var msgData:String = JSON.stringify({"message":"holy crap message worked","title":"the message title here"});

var postData:String = JSON.stringify({"registration_ids":["THELONGREGISTRATIONIDOFTHEDEVICEIWANTTOMESSAGE"],"data":msgData});

用这些:

var msgData:String = JSON.stringify({data:{message:"holy crap message worked",title:"the message title here"}});

var postData:String = JSON.stringify({registration_ids:["THELONGREGISTRATIONIDOFTHEDEVICEIWANTTOMESSAGE"]});

// remove the first curly bracket of msgData since we will concatenate the two strings in a moment.

msgData = msgData.slice(1,msgData.length);

// remove the last curly bracket of postData too.

postData = postData.slice(0, postData.length-1);

// concatenate the two, separated by a comma.

postData = postData.concat(",",msgData);

这对我有用,如果您追踪 postData 变量,您将看到 JSON 现在已正确格式化。干杯,克劳斯

于 2014-02-04T14:41:33.513 回答
0

如果您收到 401 HTTP 状态代码,则您的 API 密钥无效。因此,假设您有一个有效的 API 密钥,您首先要修复的是更改

"Authorization", "MYAPIKEY"

"Authorization", "key=MYAPIKEY"

如果您收到 400 HTTP 状态代码,则您的 JSON 无效。确保它看起来像这样:

{ "collapse_key": "score_update",
  "time_to_live": 108,
  "delay_while_idle": true,
  "data": {
    "score": "4x8",
    "time": "15:16.2342"
  },
  "registration_ids":["4", "8", "15", "16", "23", "42"]
}

您可能缺少一些引号(看起来您的键没有引号)。

于 2013-03-23T02:58:38.320 回答