加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用MultipartFormDataContent生成错误的Content-Type头文

发布时间:2020-12-15 17:47:04 所属栏目:百科 来源:网络整理
导读:我有以下代码: private static string boundary = "----CustomBoundary" + DateTime.Now.Ticks.ToString("x");private static async Taskstring PostTest(){ string servResp = ""; using (var content = new MultipartFormDataContent(boundary)) { conten
我有以下代码:
private static string boundary = "----CustomBoundary" + DateTime.Now.Ticks.ToString("x");

private static async Task<string> PostTest()
{
    string servResp = "";

    using (var content = new MultipartFormDataContent(boundary))
    {
        content.Add(new StringContent("105212"),"case-id");
        content.Add(new StringContent("1/14/2014"),"dateFrom");
        content.Add(new StringContent("1/15/2014"),"dateTo");

        HttpClientHandler handler = new HttpClientHandler();
        cookieContainer = new CookieContainer();
        handler.CookieContainer = cookieContainer;

        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post,"http://somewebsite.com/form");
        request.Headers.ExpectContinue = false;
        request.Content = content;

        httpClient = new HttpClient(handler);

        HttpResponseMessage response = await httpClient.SendAsync(request);
        response.EnsureSuccessStatusCode();

        servResp = await response.Content.ReadAsStringAsync();
    }

    return servResp;
}

当我运行它,我看到在Fiddler的Content-Type标题:

Content-Type: multipart/form-data; boundary="----CustomBoundary8d0f01e6b3b5daf"

因为边界值是引号,服务器将忽略请求体.如果我删除引号并在Fiddler Composer中运行请求,则请求被正确处理.

我尝试添加内容标题:

//request.Content.Headers.Add("Content-Type","multipart/form-data; boundary=" + boundary);
//request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data; boundary=" + boundary);

…但它没有工作,错误消息是:“无法添加值,因为标题”Content-Type“不支持多个值.和“格式的值”multipart / form-data,boundary = —- CustomBoundary8d0f024297b32d5“无效”,相应地.

如何在请求中添加适当的Content-Type标题,以便边界值不会用引号括起来?

Content-Type: multipart/form-data; boundary=----CustomBoundary8d0f01e6b3b5daf

解决方法

通过从MultipartFormDataContent中删除标题并重新添加它而不进行验证来解决此问题:
content.Headers.Remove("Content-Type");
content.Headers.TryAddWithoutValidation("Content-Type","multipart/form-data; boundary=" + boundary);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读