Eri*_*k T 3 .net c# dotnet-httpclient asp.net-core
我试图在.net核心项目中使用HttpClient向接受/返回JSON的REST服务发出GET请求.我不控制外部服务.
不管我如何努力,我想不出来设置Content-Type头的应用程序/ JSON 只.
我用的时候
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
Run Code Online (Sandbox Code Playgroud)
它发送HTTP GET请求:
Content-Type: application/json; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
但是,此特定服务不适用于此.它仅在标题为:
Content-Type: application/json
Run Code Online (Sandbox Code Playgroud)
我已经尝试设置标头而不进行验证,我在网络/ SO上找到的所有方法都不适用于.net核心.所有其他发送HTTP请求的方法在.net核心中都不可用,所以我需要弄明白这一点.如何在内容类型中排除字符集?
编辑与解决方法
如答案中所述,该服务应使用Accept标头.解决方法(正如Shaun Luttin在他的回答中所说)是在GET中添加一个空内容(什么?GET没有内容!是的......).它不漂亮,但确实有效.
你正在设置Accept标题.您需要设置ContentType标头,这只是POST的规范.
var client = new HttpClient();
var content = new StringContent("myJson");
content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
var result = client.PostAsync("http://bigfont.ca", content).Result;
Run Code Online (Sandbox Code Playgroud)
如果你真的想把它设置为GET,你可以这样做:
var client = new HttpClient();
var message = new HttpRequestMessage(HttpMethod.Get, "http://www.bigfont.ca");
message.Content = new StringContent(string.Empty);
message.Content.Headers.Clear();
message.Content.Headers.Add("Content-Type", "application/json");
var result = client.SendAsync(message).Result;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2421 次 |
| 最近记录: |