使用带有表单编码参数和标头的 C# httpclient 发布
Posted
技术标签:
【中文标题】使用带有表单编码参数和标头的 C# httpclient 发布【英文标题】:Posting with C# httpclient with formencoded paramaters and headers 【发布时间】:2013-12-12 00:24:50 【问题描述】:我正在寻找一个使用 .net HttpClient 来发布参数并添加标头的简单示例。这在 RestSharp 中非常简单,但到目前为止,我还看不到如何使用 HttpClient 执行此操作的清晰方法。
【问题讨论】:
天哪,这些到处都是。你确定你没看过? 类似这样的东西:***.com/a/7929084/402022 @cgatian 是的,我看过.. 很多,似乎有很多混乱。 @theraot 很好,该请求中没有自定义标头的具体定义。但是表单参数在那里谢谢! 【参考方案1】:如果您想修改每个请求的请求标头,那么最简单的方法是设置 DefaultRequestHeaders 属性。但是,如果您真的想为特定请求更改请求标头,则需要使用 SendAsync
方法并将其传递给 HttpRequestMessage。
[Fact]
public async Task Post_a_form_and_change_some_headers()
var client = new HttpClient() BaseAddress = _BaseAddress ;
var values = new Dictionary<string, string>()
"Id", "6",
"Name", "Skis",
"Price", "100",
"Category", "Sports"
;
var content = new FormUrlEncodedContent(values);
var request = new HttpRequestMessage()
RequestUri = new Uri("devnull",UriKind.Relative),
Method = HttpMethod.Post,
Content = content
;
request.Headers.ExpectContinue = false;
request.Headers.Add("custom-header","a header value");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
【讨论】:
谢谢。。帮助表单属性,但我还需要添加自定义标题。 @billyjean 这只是一个 xunit 测试属性。它使我可以轻松运行 sn-ps 代码。 xunit.codeplex.com以上是关于使用带有表单编码参数和标头的 C# httpclient 发布的主要内容,如果未能解决你的问题,请参考以下文章
带有自定义标头的 C# HttpClient POST 请求发送不正确的 Content-Type 标头字段