使用C#httpclient和formencoded参数和标题发布
我正在寻找一个使用.net HttpClient发布参数和添加标题的简单示例。这在RestSharp中非常简单,但到目前为止,我看不到一个明确的方法如何使用HttpClient来实现这一点。如果您想修改每个请求的请求头,那么最简单的方法就是设置DefaultRequestHeaders属性。但是,如果您真的只想更改特定请求的请求头,则需要使用使用C#httpclient和formencoded参数和标题发布,c#,post,async-await,dotnet-httpclient,C#,Post,Async Await,Dotnet Httpclient,我正在寻找一个使用.net HttpClient发布参数和添加标题的简单示例。这在RestSharp中非常简单,但到目前为止,我看不到一个明确的方法如何使用HttpClient来实现这一点。如果您想修改每个请求的请求头,那么最简单的方法就是设置DefaultRequestHeaders属性。但是,如果您真的只想更改特定请求的请求头,则需要使用SendAsync方法并向其传递一条HttpRequestMessage [Fact] public async Task Post_a_form_and_
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();
}
[事实]
公共异步任务Post\u a\u form\u和\u change\u某些\u头()
{
var client=newhttpclient(){BaseAddress=\u BaseAddress};
var values=newdictionary()
{
{“Id”,“6”},
{“名字”,“滑雪板”},
{“价格”,“100”},
{“类别”、“运动”}
};
var内容=新的FormUrlEncodedContent(值);
var request=newhttprequestmessage()
{
RequestUri=新Uri(“devnull”,UriKind.Relative),
方法=HttpMethod.Post,
内容=内容
};
request.Headers.ExpectContinue=false;
添加(“自定义头”、“头值”);
var response=wait client.sendaync(请求);
response.EnsureSuccessStatusCode();
}
如果要修改每个请求的请求头,最简单的方法是设置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();
}
[事实]
公共异步任务Post\u a\u form\u和\u change\u某些\u头()
{
var client=newhttpclient(){BaseAddress=\u BaseAddress};
var values=newdictionary()
{
{“Id”,“6”},
{“名字”,“滑雪板”},
{“价格”,“100”},
{“类别”、“运动”}
};
var内容=新的FormUrlEncodedContent(值);
var request=newhttprequestmessage()
{
RequestUri=新Uri(“devnull”,UriKind.Relative),
方法=HttpMethod.Post,
内容=内容
};
request.Headers.ExpectContinue=false;
添加(“自定义头”、“头值”);
var response=wait client.sendaync(请求);
response.EnsureSuccessStatusCode();
}
天哪,到处都是。你确定你没有看过吗?像这样:@cgatian是的,我看过。。相当多,而且似乎有很多混淆。@很好,该请求中没有自定义头的具体定义。但是表单参数在那里,谢谢!天啊,到处都是。你确定你没有看过吗?像这样:@cgatian是的,我看过。。相当多,而且似乎有很多混淆。@很好,该请求中没有自定义头的具体定义。但是表单参数在那里,谢谢!谢谢你。。有助于表单属性,但我还需要添加自定义标题。@billyjean这只是一个xunit测试属性。它使我能够轻松地运行代码片段。谢谢你。。有助于表单属性,但我还需要添加自定义标题。@billyjean这只是一个xunit测试属性。它使我能够轻松地运行代码片段。