【发布时间】:2012-08-12 12:16:09
【问题描述】:
我正在尝试通过 C# 发送 gcm 消息。
我尝试了几次,但在尝试以 json 方法发送时得到http:400-Bad request。
当我尝试以文本形式发送时,我无法阅读(rtl 语言) - 这就是我尝试 JSON 的原因。
有人知道是什么问题吗?
谢谢!
私有静态字符串 SendNotificationJson2(string id, string msg)
{
var AuthString = "AIzaSyDAtmaqSdutBQemqmd4dQgf33B_6ssbvXA";
var RegistrationID = id;
var 消息 = 味精;
//-- 创建 C2DM Web 请求对象的 GCM 请求 --//
HttpWebRequest 请求 = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send");
Request.Method = "POST";
Request.KeepAlive = false;
//-- 创建查询字符串 --//
字典 dict = new Dictionary();
dict.Add("registration_ids", RegistrationID);
dict.Add("数据", 消息);
dict.Add("collapse_key", "1");
字符串 postData = GetPostStringFrom(dict);
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
Request.ContentType = "应用程序/json";
Request.ContentLength = byteArray.Length;
Request.Headers.Add("授权", "key=" + AuthString);
//-- 委托建模以验证服务器证书 --//
ServicePointManager.ServerCertificateValidationCallback += 委托(
目的
发件人,
System.Security.Cryptography.X509Certificates.X509Certificate
p证书,
System.Security.Cryptography.X509Certificates.X509Chain pChain,
System.Net.Security.SslPolicyErrors pSSLPolicyErrors)
{
返回真;
};
//-- 创建流以写入字节数组 --//
流数据流 = Request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
数据流。关闭();
//-- 发布消息--//
WebResponse 响应 = Request.GetResponse();
HttpStatusCode ResponseCode = ((HttpWebResponse)Response).StatusCode;
if (ResponseCode.Equals(HttpStatusCode.Unauthorized) || ResponseCode.Equals(HttpStatusCode.Forbidden))
{
返回“未经授权 - 需要新令牌”;
}
否则如果(!ResponseCode.Equals(HttpStatusCode.OK))
{
返回“来自网络服务的响应不正常”;
//Console.WriteLine("来自 Web 服务的响应不正常:");
//Console.WriteLine(((HttpWebResponse)Response).StatusDescription);
}
StreamReader Reader = new StreamReader(Response.GetResponseStream());
字符串 responseLine = Reader.ReadLine();
Reader.Close();
返回“确定”;
}
私有静态字符串 GetPostStringFrom(Dictionary postFieldNameValue)
{
// return Newtonsoft.Json.JsonConvert.SerializeObject(postFieldNameValue);
return "\"data\": {\"Message\": \"" + postFieldNameValue["data"] + "\"},\"registration_ids\":[\"" + postFieldNameValue["registration_ids"] + " \"]}";
}
【问题讨论】:
标签: android google-cloud-messaging