gpt4 book ai didi

c# - 在 C# 中使用 httpclienthandler 使用一个参数发布多个值

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:48 25 4
gpt4 key购买 nike

我正在尝试使用 HTTP 客户端向网站发送表单。该网站然后根据我的请求返回一个包含数据的列表。该过程本身运行良好,但我必须执行 3 个请求,而当我在浏览器中手动执行时,一个请求就足够了。

在浏览器中,我有多个复选框用于对数据应用过滤器。发布的 http 表单中包含以下数据:

enter image description here

我能够通过在 C# 中创建字典来获取相同的数据,然后将其转换为 FormUrlEncodedContent:

values = new Dictionary<string, string>
{
{ "statuses[]", "2048" },
{ "issued_from", "" },
{ "issued_till", "" },
{ "listing_from", "" },
{ "listing_till", "" },
};
var content = new FormUrlEncodedContent(values);
content.Headers.Add("X-Requested-With", "XMLHttpRequest");
var response = GlobalVar.client.PostAsync(URI, content).Result;

使用这种方法,我必须发出 3 个请求,然后合并获得的数据。考虑到我的系统资源成本、服务器资源成本和互联网带宽成本,这显然不是最干净的解决方案。

我在浏览器中检查了未格式化的请求 header ,如下所示:

Referer: https://www.example.com/en/example/?statuses[]=512&statuses[]=1024&statuses[]=2048&max_results=100&page=1

这让我得出结论,我可能只需将状态添加到字典中 3 次:

values = new Dictionary<string, string>
{
{ "statuses[]", "512" },
{ "statuses[]", "1024" },
{ "statuses[]", "2048" },
{ "issued_from", "" },
{ "issued_till", "" },
{ "listing_from", "" },
{ "listing_till", "" }
};

不幸的是,字典似乎像数据库一样工作,不会多次接受相同的键值。

有没有人能解决我如何在一个请求中发布所有三种状态?我可以使用不同的东西吗,比如

List<Tuple<string,string>>()?

致以最诚挚的问候,非常感谢您的帮助。

最佳答案

为值发送 CSV 字符串可能比数组更好。如果你想要一个数组而不是使用以下:

Dictionary<string, string[]> values = new Dictionary<string, string[]>{
{ "statuses", new string[] {"512","1024","2048" }},
{ "issued_from", null },
{ "issued_till", null },
{ "listing_from", null },
{ "listing_till", null }
};

关于c# - 在 C# 中使用 httpclienthandler 使用一个参数发布多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48005826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com