我正在尝试使用HTTP客户端将表单发送到网站。然后,网站会根据我的请求返回包含数据的列表。 这个过程本身运行正常,但是当我在浏览器中手动完成时,我必须做3个请求。
在浏览器中,我有多个复选框可以对数据应用过滤器。发布的http表单中包含以下数据:
我能够通过在C#中创建一个dictonary来获取相同的数据,然后我将其转换为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个请求,然后合并获得的数据。这显然不是我系统资源成本,服务器资源成本和互联网带宽的最干净的解决方案。
我在浏览器中检查了请求的未格式化标题,如下所示:
Referer: https://www.example.com/en/example/?statuses[]=512&statuses[]=1024&statuses[]=2048&max_results=100&page=1
这使我得出结论,我可能只是将状态三次添加到字典中:
values = new Dictionary<string, string>
{
{ "statuses[]", "512" },
{ "statuses[]", "1024" },
{ "statuses[]", "2048" },
{ "issued_from", "" },
{ "issued_till", "" },
{ "listing_from", "" },
{ "listing_till", "" }
};
不幸的是,字典似乎像数据库一样工作,并且不会多次接受相同的键值。
有没有人能够解决我如何在一个请求中发布所有三种状态的问题?我可以使用不同的东西,例如
List<Tuple<string,string>>()?
致以最诚挚的问候,非常感谢您的帮助。
答案 0 :(得分:0)
为值而不是数组发送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 }
};