使用带有表单编码参数和标头的 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 发布的主要内容,如果未能解决你的问题,请参考以下文章

如何发送带有自定义标题的表单

带有可选 Base64 编码的 REST API 标头

带有 GET 和额外参数的 HTML 表单提交

带有自定义标头的 C# HttpClient POST 请求发送不正确的 Content-Type 标头字段

HttpClient postasync,带有自定义标头和应用程序/json,用于正文 C#

删除带有标头和参数的请求 Volley