如何使用HttpClient发送表单数据POST请求,只使用键值参数?

5

如何通过 HttpClient 仅使用键值参数发送 表单数据(form-data)POST 请求?

这是我的方法的代码:

public async Task<HttpResponseMessage> MakePostAsync(string endpoint, string token, Dictionary<string, string> headers = null, KeyValuePair<string, string>[] parameters = null)
        {
            var request = new HttpRequestMessage(HttpMethod.Post, endpoint);
            if (headers != null)
            {
                foreach (var header in headers)
                    request.Headers.Add(header.Key, header.Value);
            }
            request.Headers.Add("Content-Type", "multipart/form-data");
            var formaData = new MultipartFormDataContent();

            formaData.Add(new StringContent(token), "__RequestVerificationToken");
            formaData.Add(new StringContent("admin"), "Username");
            formaData.Add(new StringContent("1"), "Password");
            request.Content = formaData;


            HttpResponseMessage response = await Task.Run(() => client.SendAsync(request));
            return response;
        }

在 JavaScript 中使用的相同请求,但它有效


你会收到什么响应信息? - auburg
为什么要使用 "HttpResponseMessage response = await Task.Run(() => client.SendAsync(request));" 而不是 "HttpResponseMessage response = await client.SendAsync(request);"? - yob
你确定在Postman中使用multipart/form-data发送吗?看起来Postman正在发送text/json。 - yob
所以..请求的Content-Type是"multipart/form-data; boundary=--------------------------939589509105609250428586"。 - Andrew Volodko
@Andrew - 你在使用Postman时看到这个了吗? - yob
@yob 是的,请求头屏幕链接 - Andrew Volodko
2个回答

2

在这个问题上,我通过使用RestSharp得到了解决。我需要从该请求的响应中获取Set-Cookie头部的值。我只需将CookieContainer添加到RestClient中即可。不确定如何使用HttpClient管理此问题。感谢所有试图帮助我的人。


System.Net.CookieContainer usercookie = new CookieContainer(); var httpClient = new System.Net.Http.HttpClient(new System.Net.Http.HttpClientHandler { CookieContainer = usercookie }); - yob

0

您的等待方式不正确。

请尝试: var response = await client.SendAsync(request);


你能安装像 Fiddler 这样的工具并捕获发出的 HTTP 请求吗? - Leonardo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接