2015-05-23 58 views
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)未經授權 。請任何一個幫助一個預先感謝您

+0

請任何一個回答我加入this..request.UseDefaultCredentials =真 –

+0

嘗試。 request.PreAuthenticate = true; request.Credentials = CredentialCache.DefaultCredentials; – GANI

回答

0

嘗試在你的Web方法unsing會議

[WebMethod(true)] 
相關問題