无法在办公室内调用 onesignal api,但使用外部 wifi 工作

Unable to call onesignal api within office but working from external wifi

我正在使用 C# 调用 OneSignal 创建通知 API。它在我家工作,但当我尝试从我的办公室发送它时,它给出了 400 BAD REQUEST。 我得到的错误是

The error that comes is Please include a case-sensitive header of 
Authorization:   Basic <YOUR-REST-API-KEY-HERE> with a valid REST API key."],
"reference":["https://documentation.onesignal.com/docs/accounts-and-keys#section-keys-ids"]

此外,在办公室网络中,当我从 OneSignal 仪表板发送它时它可以工作。

是否是防火墙问题?

用 POSTMAN 测试并得到相同的结果。 POSTMAN 在办公室网络外工作并在办公室网络内发出 400 Bad Request。

 using System.IO;
 using System.Net;
  using System.Text;

  var request = WebRequest.Create("https://onesignal.com/api/v1/notifications") as HttpWebRequest;

request.KeepAlive = true;
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";

 request.Headers.Add("authorization", "Basic NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjxx");

var serializer = new JavaScriptSerializer();
var obj = new { app_id = "5eb5a37e-b458-11e3-ac11-000c2940e6xx",
           contents = new { en = "English Message" },
           include_player_ids = new string[] {"all"} };



var param = serializer.Serialize(obj);
byte[] byteArray = Encoding.UTF8.GetBytes(param);

string responseContent = null;

 try {
    using (var writer = request.GetRequestStream()) {
       writer.Write(byteArray, 0, byteArray.Length);
    }

   using (var response = request.GetResponse() as HttpWebResponse) {
   using (var reader = new StreamReader(response.GetResponseStream())) {
         responseContent = reader.ReadToEnd();
     }
   }
}
catch (WebException ex) {
   System.Diagnostics.Debug.WriteLine(ex.Message);
   System.Diagnostics.Debug.WriteLine(new    StreamReader(ex.Response.GetResponseStream()).ReadToEnd());
   }
    System.Diagnostics.Debug.WriteLine(responseContent);

尝试关注

System.Net.CredentialCache credentialCache = new System.Net.CredentialCache(); 
credentialCache.Add(
    new System.Uri("http://www.yoururl.com/"),
    "Basic", 
    new System.Net.NetworkCredential("username", "password")
);

...
...

httpWebRequest.Credentials = credentialCache; 

但我认为您应该首先使用测试 RESTFUL 工具来检查哪些参数可以 return 正确值。

通过将 onesignal 主机作为受信任站点添加到我们的防火墙,问题得到解决。