在表单提交中加入一些标题

时间:2016-06-28 18:04:15

标签: c# anglesharp

使用AngleSharp,我试图加载页面然后进行表单提交,但它没有给我预期的结果(即与浏览器不同),我认为它可能是因为一些遗失的标题。提交表单时,最好的地方是什么,并添加一些标题?我可以在发送请求之前获取请求吗?

例如,我的代码类似于:

var doc = currentContext.OpenAsync(baseUrl).Result;
var form = doc.QuerySelector("form") as IHtmlFormElement;
// do some stuff to manipulate the form
// ...
// Here I need to set a header before SubmitAsync...
doc = form.SubmitAsync().Result;

1 个答案:

答案 0 :(得分:2)

我找不到如何将标头设置挂钩到BrowsingContext实例的请求中。

如果没有其他人使用AngleSharp找到如何做到这一点,这应该是首选解决方案,一种解决方法是自己发出http请求,手动,使用框架的HttpClient,因此您可以根据需要使用请求标头,然后提取响应的文本并将其传递给AngleSharp {{1}我经常做的事情。

示例:

HtmlParser

如果您不确定代码制作 HttpClient hc = new HttpClient(); hc.DefaultRequestHeaders.TryAddWithoutValidation("headerSetting", "headerValue"); var response = await hc.GetAsync("yourUrl"); var html = await response.Content.ReadAsStringAsync(); //from here on you are under AngleSharp's jurisdiction... var parser = new HtmlParser(); IHtmlDocument parsedDoc = parser.Parse(html); 中可能缺少哪个headers,我通常会做一件事来分析帖子请求,并确保我没有错过任何http request headers 1}},是在Fiddler的实例运行时在浏览器中执行操作,因此我可以剖析它。

例如,假设您有一个类似

的表单

enter image description here

使用fiddler我可以看到发送到服务器的所有内容(包括cookie)

enter image description here

headers,这就是你所追求的。在这里,您将能够了解通过浏览器执行操作所发送的所有header设置,因此您可以在代码制作http request中模仿它(您拥有{{1}的所有数据}和request)。

enter image description here