使用带有预编码的参数和标头的C#httpclient发布

bil*_*ean 1 c# post async-await dotnet-httpclient

我正在寻找一个简单的示例,使用.net HttpClient POST参数并添加标题。这在RestSharp中非常容易,但是到目前为止,我还看不到如何使用HttpClient执行此操作的明确方法。

Dar*_*ler 5

如果要为每个请求修改请求标头,那么最简单的方法是设置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();
}
Run Code Online (Sandbox Code Playgroud)