2016-06-28 10 views
0

Mit AngleSharp versuche ich eine Seite zu laden und dann eine Formularübergabe, aber es gibt mir nicht das erwartete Ergebnis (dh nicht das gleiche wie der Browser) und ich denke es möglicherweise wegen einiger fehlender Header. Was ist der beste Ort zum Anhaken und Hinzufügen einiger Header, wenn Sie ein Formular absenden? Kann ich die Anfrage erhalten, bevor sie gesendet wird?Include einige Header mit Formularübermittlung

Zum Beispiel sieht mein Code so etwas wie:

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; 

Antwort

1

konnte ich nicht finden, wie in eine BrowsingContext Instanz Request-Header-Einstellungen hook.

Falls sonst niemand findet, wie es geht AngleSharp nur mit, was die bevorzugte Lösung sein sollte, würde man Abhilfe, die http auszustellen fordern Sie sich, manuell, die HttpClient des Framework, so dass Sie mit spielen können die Anforderungsheader, wie Sie möchten, und extrahieren Sie dann den Text der Antwort und übergeben Sie es an AngleSharpHtmlParser, etwas, was ich normalerweise tue.

Beispiel:

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); 

Wenn Sie von denen nicht sicher sind, headers Sie in Ihrem Code-made http request, eine Sache fehlt möglicherweise ich tun, um in der Regel eine Post-Anforderung zu analysieren und sicherstellen, dass ich fehle nicht headers, ist die Aktion im Browser zu tun, während eine Instanz von Fiddler läuft, so kann ich sezieren es.

Zum Beispiel sagen, Sie haben eine Form wie

enter image description here

Fiedler Verwendung kann ich alles sehen, was auf dem Server (einschließlich Cookies)

enter image description here

Und headers senden wurde, Das ist was du willst. Hier können Sie alle header Einstellungen kennenlernen, die über den Browser gesendet werden, sodass Sie sie in Ihrem Code-made http request nachahmen können (Sie haben alle Daten für request und response).

enter image description here

+0

, die auf die Frage eine nette Antwort ist _ „Wie kann ich eine HTTP-Anfrage prüfen“ _, die diese Frage nicht zu sein scheint. – CodeCaster

+0

Sie haben eigentlich recht. Ich habe vergessen, die Hooking-Orte hinzuzufügen, die er verlangt - die Header-Sammlung aus dem HttpClient. Er benutzt AngleSharp, aber ich bin mir nicht sicher, ob ich weiß, wo ich dort hingehen werde, werde ich mir ansehen. Warum klingelt mir Ihr Benutzername eine (1? Menge) Glocke? :) – Veverke

+0

Es ist wahrscheinlich, weil ich rumgehe und die Antworten anderer kritisiere, wenn mir danach ist. Es ist nicht das erste Mal, dass wir uns treffen. – CodeCaster

Verwandte Themen