1

私の大学の科目のスケジュールで地下鉄アプリケーションを作成しようとしています。HAP+Fizzler を使用してページを解析し、データを取得します。

スケジュール リンクで @Too many automatic redirections@ エラーが発生します。CookieContainer が役立つことがわかりましたが、実装方法がわかりません。

        CookieContainer cc = new CookieContainer();
        request.CookieContainer = cc;

私のコード:

            public static HttpWebRequest request;
    public string Url = "http://cist.kture.kharkov.ua/ias/app/tt/f?p=778:201:9421608126858:::201:P201_FIRST_DATE,P201_LAST_DATE,P201_GROUP,P201_POTOK:01.09.2012,31.01.2013,2423447,0:";
    public SampleDataSource()
    {

        HtmlDocument html = new HtmlDocument();
        request = (HttpWebRequest)WebRequest.Create(Url);
        request.Proxy = null;
        request.UseDefaultCredentials = true;
        CookieContainer cc = new CookieContainer();
        request.CookieContainer = cc;
        html.LoadHtml(request.RequestUri.ToString());
        var page = html.DocumentNode;

String ITEM_CONTENT = null;
foreach (var item in page.QuerySelectorAll(".MainTT")) 
{
    ITEM_CONTENT = item.InnerHtml;
}
      }

CookieContainer を使用するとエラーは発生しませんが、何らかの理由で DocumentNode.InnerHtml がページ html ではなく、URI の値を取得します。

4

3 に答える 3

1

1 行だけ変更する必要があります。

交換

 html.LoadHtml(request.RequestUri.ToString());

 html.LoadHtml(new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd());

編集

最初にメソッドを次のようにマークしますasync

request.CookieContainer = cc;
var resp = await request.GetResponseAsync();
html.LoadHtml(new StreamReader(resp.GetResponseStream()).ReadToEnd());
于 2012-11-28T18:12:21.373 に答える
0
于 2013-06-24T17:07:19.557 に答える