ASP.NET MVC的简单HTTP Post请求

时间:2016-12-18 10:28:38

标签: c# asp.net-mvc http

我想在我的网络应用程序中使用Google API。具体来说,我想使用Firebase将Push-Messages发送到移动设备。

我尝试使用Advanced REST Client来测试功能。当我这样配置时:

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的异常。异常消息(大致翻译)"错误使用Headername。确保Requesetheaders与" HttpRequestMessage" -Objects,Answerheaders with" HttpREsponseMessage" -Objects [...]一起使用。

对我来说,我在那里做的是一条POST消息。我正在调用该服务,我需要传递参数。所以对我来说这是一个带参数的请求。

我需要在这做什么?

1 个答案:

答案 0 :(得分:1)

使用content属性定义Content-Type。在您的示例中,您使用的是StringContent。将编码和Content-Type添加到StringContent类中。

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();