2016-06-28 8 views
0

AngleSharpを使用して、ページをロードしてからフォームの提出を試みていますが、予想通りの結果を得られません(ブラウザと同じではないと思います)。ヘッダーが欠落している可能性があります。フォームを送信するときにヘッダーを追加して追加するのに最適な場所は何ですか?要求が送信される前にそれを保持することはできますか?私はBrowsingContextインスタンスの要求にヘッダの設定をフックする方法を見つけることができませんでしたフォーム提出時にいくつかのヘッダーを含める

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

は例えば、私のコードは次のように見えます。フレームワークのHttpClientを使用して

誰もが1つの回避策は、HTTPを発行することになり、好ましい解決策であるべき、唯一AngleSharpを使用してそれを行う方法を見つけられない場合は、自分自身を要求し、手動、ので、あなたがで遊ぶことができますあなたが望むようにリクエストヘッダーを作成し、応答のテキストを抽出して、通常は何かをAngleSharpHtmlParserに渡します。

例:

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

あなたはあなたのコード製http request、私は通常、POSTリクエストを分析するために行うと、私はいずれかを欠くわけではないことを確認します一つのことに欠落している可能性がありheadersいるのかわからない場合headersは、Fiddlerのインスタンスが実行されている間にブラウザでアクションを実行するため、を解読するととなります。

例えば、私が(Cookieを含む)サーバーに送信されたすべてのもの

enter image description here

そしてheadersを見ることができますが、

シオマネキを使用し

enter image description here

のような形を持っていると言いますそれはあなたが何をしているかです。ここでは、ブラウザを使用してアクションを送信するheaderの設定をすべて知ることができるので、コード化されたhttp requestに模倣することができます(requestresponseのすべてのデータがあります)。質問への答えは素敵だ

enter image description here

+0

_この質問をしていないようです_、「どのように私は、HTTPリクエストを検査します」。 – CodeCaster

+0

あなたは本当に正しいです。私はHttpClientからのヘッダーコレクション、彼が求めているフッキング場所を追加するのを忘れていました。彼はAngleSharpを使っていますが、そこにフックする場所がわかりません。あなたのユーザー名が私に(1〜多くの)鐘を鳴らすのはなぜですか? :) – Veverke

+0

おそらく私は周りを回って、私がそれが気に入ったら他の人の答えを批判するからでしょう。私たちが本当に会うのは初めてではありません。 – CodeCaster

関連する問題