2016-12-18 17 views
0

Webアプリケーション内でGoogle APIを使用したいと考えています。具体的には、Firebaseを使用して携帯端末にプッシュメッセージを送信したいと考えています。ASP.NET MVCでの単純なHTTP投稿要求

高度なRESTクライアントを使用して機能をテストしようとしました。私はこのようにそれを設定する場合:

Request configured in a testing client

私は、「200 OK」を取得し、プッシュメッセージがスマートフォンに表示されます。

私は今のVisual Studioでこれを実装してみました:

 HttpClient client = new HttpClient(); 

     HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://fcm.googleapis.com/fcm/send"); 
     requestMessage.Headers.Add("Content-Type", "application/json"); 
     requestMessage.Headers.Add("Authorization", "key=AAAAG...:APA91bH7U..."); 
     requestMessage.Content = new StringContent("{ \"notification\": { \"title\": \"Portugal vs. Denmark\", \"body\": \"5 to 1\" }, \"to\": \"caJ_lIocLY4:APA91bEL19TRFFPlXFx3kZ_FTt...Q\" }"); 

HttpResponseMessage response = client.SendAsync(requestMessage).GetAwaiter().GetResult(); 

をしかし、最初requestMessage.Headers.Addライン上のSystem.InvalidOperationExceptionのような例外を取得します。 "HttpRequestMessage" - オブジェクト、 "HttpREsponseMessage"を持つAnswerheaders - オブジェクト[...]。

私にとって、どのようなメッセージが表示されるのですか?私はサービスを呼び出していると私は、引数を渡す必要があります。POSTメッセージがあるやっている。私にとっては、これは、引数で要求されるように。

を私はここで行うには何が必要ですか?

答えて

1

Content-Typeはcontentプロパティを使用して定義されています。例ではStringContentを使用しています。代わりにStringContentクラスにエンコードとContent-Typeを追加してください

HttpClient client = new HttpClient(); 

HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://fcm.googleapis.com/fcm/send"); 
requestMessage.Headers.Add("Authorization", "key=AAAAG...:APA91bH7U..."); 
requestMessage.Content = new StringContent(jsonAsStringContent, Encoding.UTF8, "application/json"); 

HttpResponseMessage response = client.SendAsync(requestMessage).GetAwaiter().GetResult(); 
+0

これは、感謝してくれました。 しかし、私もHeaders.TryAddWithoutValidation()を使う必要があると付け加えなければなりません。なんらかの理由で、巨大な長いキーが他のフレームワークによって有効であると受け入れられていないためです。 ありがとうございます! – Ravior

関連する問題