C#:在HTTP中使用Content-Type Header发送参数

时间:2018-02-15 11:04:48

标签: c# json http-post httpclient

我正在尝试使用post发送HTTP HTTP client请求。在使用Content-Type方法设置StringContent标头时,我收到错误消息:

  

格式“application / json; ty = 2”不正确

我的代码如下:

string result2 = JsonConvert.SerializeObject(values);
 var content = new StringContent(result2, Encoding.UTF8, "application/json; ty=2");
 var response = await client.PostAsync("http://127.0.0.1:8080/~/in-cse/in-name", content);
                    var response_string = await response.Content.ReadAsStringAsync();

但在我的HTTP Post格式中,我必须包含ty=2参数和application/json。我用Postman对此进行了测试,结果非常好。我怎样才能在这里实现同样的目标。我甚至发现你可以用以下格式将参数添加到内容类型:  content := "Content-Type" ":" type "/" subtype *(";" parameter) 那么为什么它不适合我。 **编辑:**甚至试过这个:

 HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://127.0.0.1:8080/~/in-cse/in-name");
                    request.Content = new StringContent(result2, Encoding.UTF8, "application/json;ty=2");

                    client.SendAsync(request).ContinueWith(resposetask => { Console.WriteLine("response:{0}", resposetask.Result); });

我得到同样的错误

1 个答案:

答案 0 :(得分:0)

您必须使用TryAddWithoutValidation DefaultRequestHeaders中的HttpClient,如下所示:

client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json;ty=2");