bhr*_*uni 4 c# iis-6 web-services windows-server-2003-r2 firebase-notifications
用于Firebase通知代码
WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
tRequest.Method = "post";
tRequest.ContentType = "application/json";
var data = new{collapse_key = "unassigned", to = deviceToken,data = new
{body = message,title = title,sound = "default"}
};
Run Code Online (Sandbox Code Playgroud)
要在手机上传递通知的消息
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(data);
Byte[] byteArray = Encoding.UTF8.GetBytes(json);
tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationId));
tRequest.Headers.Add(string.Format("Sender: id={0}", senderId));
tRequest.ContentLength = byteArray.Length;
Run Code Online (Sandbox Code Playgroud)
下面的代码出现错误
using (Stream dataStream = tRequest.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
using (WebResponse tResponse = tRequest.GetResponse())
{
using (Stream dataStreamResponse = tResponse.GetResponseStream())
{
//code 1
}
}
}
Run Code Online (Sandbox Code Playgroud)
标题中的异常表示您正在使用TLS加密连接到端点,并且该端点公开的证书不受您信任。这意味着没有使用您在CA(证书颁发机构)存储中拥有的证书进行签名。就像一个自签名证书。
如果证书是自签名的,则可以将其添加到CA Store。如果没有,您可以尝试使用浏览器浏览端点,并查找呈现端点的证书的副本(或实际登录的证书的副本)(请注意,如果端点已经受到威胁,请执行此操作,重新手动信任其证书。)
您还可以通过添加始终返回有效值的自定义证书验证处理程序来避免此检查!(真正)。但是,请注意,这样做将使您容易受到中间人的攻击,因为这将使您无法检查端点的连通性。
ServicePointManager
.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
Run Code Online (Sandbox Code Playgroud)