【问题标题】:Send form-data in C# HttpClient在 C# HttpClient 中发送表单数据
【发布时间】:2021-06-05 11:07:56
【问题描述】:

你好,我正在使用 C# HttpClient 从 api 中提取数据。我需要使用 post 方法以表单数据形式提取数据。我写了下面的代码,但得到了一个空的响应。我该怎么做?

var client = new HttpClient();

        client.Timeout = TimeSpan.FromSeconds(300);
        client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json"));

    var request = new HttpRequestMessage();
        request.Method = HttpMethod.Post;
        request.RequestUri = new Uri("https://myapi.com");

        var content = new MultipartFormDataContent();
       
        var dataContent = new FormUrlEncodedContent(new[]
        {
            new KeyValuePair<string, string>("value1", "myvalue1"),
            new KeyValuePair<string, string>("value2", "myvalue2"),
            new KeyValuePair<string, string>("value3", "myvalue3")
        });
        content.Add(dataContent);

        request.Content = content;
        var header = new ContentDispositionHeaderValue("form-data");
        request.Content.Headers.ContentDisposition = header;
        
        var response = await client.PostAsync(request.RequestUri.ToString(), request.Content);
        var result = response.Content.ReadAsStringAsync().Result;

【问题讨论】:

  • 什么是api路由?能否请您也发布您的 API?

标签: c# httpclient rest


【解决方案1】:

您使用FormUrlEncodedContent 以不正确的方式发送数据。要将您的参数作为MultipartFormDataContent 字符串值发送,您需要替换下面的代码

var dataContent = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("value1", "myvalue1"),
    new KeyValuePair<string, string>("value2", "myvalue2"),
    new KeyValuePair<string, string>("value3", "myvalue3")
});

有了这个:

content.Add(new StringContent("myvalue1"), "value1");
content.Add(new StringContent("myvalue2"), "value2");
content.Add(new StringContent("myvalue3"), "value3");

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多