C# 使用ASP.NET MVC的简单HTTP Post请求

C# 使用ASP.NET MVC的简单HTTP Post请求,c#,asp.net-mvc,http,C#,Asp.net Mvc,Http,我想在我的web应用程序中使用Google API。具体来说,我想使用Firebase向移动设备发送推送消息 我尝试使用高级REST客户端来测试功能。当我这样配置它时: 我得到“200 OK”,推送信息显示在智能手机上 我现在尝试在Visual Studio中实现此功能: HttpClient client = new HttpClient(); HttpRequestMessage requestMessage = new HttpRequestMessag

我想在我的web应用程序中使用Google API。具体来说,我想使用Firebase向移动设备发送推送消息

我尝试使用高级REST客户端来测试功能。当我这样配置它时:

我得到“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。请确保RequeSetHeader与“HttpRequestMessage”-对象一起使用,AnswerHeader与“HttpREsponseMessage”-对象一起使用[…]

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


此处需要执行什么操作?

内容类型是使用Content属性定义的。在您的示例中,您使用的是StringContent。请改为向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();

这很有帮助,谢谢。但我必须补充一点,我还需要使用Headers.TryAddWithoutValidation();在第三行,因为由于某种原因,该巨大的长密钥不被框架其他方接受为有效。谢谢!我在vuforia中有一个云数据库,它提供访问其存储的web服务。当我使用HttpRequestMessage发出Http post请求时,它返回404 not found错误,即使资源存在。我使用我不熟悉这个Csharp,所以如果你能帮助我,我将非常感激。我建议你提出一个新的问题,在那里你可以详细阐述你的问题,并为你的问题提供一些背景。