2017-03-15 1 views
0

私はOneSignal Create Notifications APIを呼び出すためにC#を使用しています。私の家から仕事をしていますが、私のオフィスからそれを送ろうとすると、それは400の悪い要求を出します。私はそれが動作OneSignalダッシュボードからそれを送信するときに私が手 エラーは、オフィスのネットワークでは、またオフィス内で信号信号を呼び出すことができませんでしたが、外部Wi-Fiから作業しています

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"] 

です。

ファイアウォールの問題ですか?

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); 
+0

あなたの本当の 'app_id'と' authorization'トークンではないことを祈っています...さらに、これは私にファイアウォールの問題であると思われたり、あなたの仕事ネットワークによって何とか変更されています。 – JosephGarrone

+0

@JosephGarrone POSTMANと試行して同じエラーが発生しました。リクエストが変更されたかどうかを確認する方法。 POSTMANコンソールは両方とも同じです –

+0

明らかです:ファイアウォールの問題です。 – TruthSeeker

答えて

0

この問題は、ファイアウォールに信頼できるサイトとして1つの信号ホストを追加することで解決します。

1

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なツールを使うべきだと思います。

+0

素敵な提案。私はPOSTMANを使用し、必要な出力が得られるかどうかを確認します –

+0

POSTMANで同じエラーが発生します –

+0

デバッグできるのですか?問題を見つけてリクエストを確認できるかもしれません。 –

関連する問題