1
我的GCM代碼:System.Net.WebException:遠程服務器返回錯誤:(401)Unauthorized.in C#?
[WebMethod]
public void SendNotificationToAndroid()
{
string DeviceTokenID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
// string deviceId = notificationId;
const string tickerText = "Text";
const string contentTitle = "Title";
string message = "Hello world";
string postData =
"{ \"registration_ids\": [ \"" + DeviceTokenID + "\" ], " +
"\"data\": {\"tickerText\":\"" + tickerText + "\", " +
"\"contentTitle\":\"" + contentTitle + "\", " +
"\"message\": \"" + message + "\"}}";
SendGcmNotification("xxxxxxxxxxxxxxxxx", postData, "application/json");
}
private void SendGcmNotification(string apiKey, string postData, string postDataContentType)
{
// ServicePointManager.ServerCertificateValidationCallback += ValidateServerCertificate;
var byteArray = Encoding.UTF8.GetBytes(postData);
var request = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send");
request.Method = "POST";
request.KeepAlive = false;
request.ContentType = postDataContentType;
request.Headers.Add(string.Format("Authorization: key={0}", apiKey));
request.ContentLength = byteArray.Length;
request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
var dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
try
{
var response = request.GetResponse();
var responseCode = ((HttpWebResponse)response).StatusCode;
if (responseCode.Equals(HttpStatusCode.Unauthorized) || responseCode.Equals(HttpStatusCode.Forbidden))
{
const string text = "Unauthorized - need new token";
Context.Response.Write(text);
}
else if (!responseCode.Equals(HttpStatusCode.OK))
{
const string text = "Response from web service isn't OK";
Context.Response.Write(text);
}
// ReSharper disable AssignNullToNotNullAttribute
var reader = new StreamReader(response.GetResponseStream());
// ReSharper restore AssignNullToNotNullAttribute
reader.ReadToEnd();
reader.Close();
//Context.Response.Write();
}
catch (Exception e)
{
Context.Response.Write(e.ToString());
}
}
這是在服務器響應一面。我得到錯誤「System.Net.WebException我的推送通知代碼:遠程服務器返回錯誤:(401)未經授權 。請任何一個幫助一個預先感謝您
請任何一個回答我加入this..request.UseDefaultCredentials =真 –
嘗試。 request.PreAuthenticate = true; request.Credentials = CredentialCache.DefaultCredentials; – GANI