2014-11-20 26 views

回答

0

你需要张贴到相同的URL与所有的视图状态,那么你可以改变__EVENTARGUMENT岗位价值页$ 1,第$ 2,第$ 3等

像这样的事情

//Create request to URL. 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.roads.maryland.gov/pages/cic.aspx?PageId=857&Type=tab"); 

    //Set request headers. 
    request.KeepAlive = true; 
    request.Headers.Add("Origin", @"http://www.roads.maryland.gov"); 
    request.Headers.Add("X-MicrosoftAjax", "Delta=true"); 
    request.UserAgent = "Mozilla/1.0"; 
    request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; 
    request.Accept = "*/*"; 
    request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-GB,en;q=0.8,en-US;q=0.6"); 

    //Set request method 
    request.Method = "POST"; 

    // Disable 'Expect: 100-continue' behavior. More info: http://haacked.com/archive/2004/05/15/http-web-request-expect-100-continue.aspx 
    request.ServicePoint.Expect100Continue = false; 

    //Set request body. 
    string body = "__EVENTARGUMENT=Page%24"; 
    body += pageNumber.ToString(); 
    body += @"&ctl00%24PlaceHolderMain%24ScriptManager1=ctl00%24PlaceHolderMain%24CICContract1%24displayPanel1%7Cctl00%24PlaceHolderMain%24CICContract1%24gvSSP&MSO_PageHashCode=687&MSOWebPartPage_PostbackSource=&MSOTlPn_SelectedWpId=&MSOTlPn_View=0&MSOTlPn_ShowSettings=False&MSOGallery_SelectedLibrary=&MSOGallery_FilterString=&MSOTlPn_Button=none&__REQUESTDIGEST=0x8DBC9CD602B61A910B12C83C03A47B6755DE07797515E34AEA8EE0BDC93813FC6A208251090430008C51E50BF4A3D0EBEAF4A9F2CC60072EC4B6B5FED3F48D31%2C20%20Nov%202014%2017%3A15%3A59%20-0000&MSOSPWebPartManager_DisplayModeName=Browse&MSOWebPartPage_Shared=&MSOLayout_LayoutChanges=&MSOLayout_InDesignMode=&MSOSPWebPartManager_OldDisplayModeName=Browse&MSOSPWebPartManager_StartWebPartEditingName=false&ctl00%24PlaceHolderSearchArea%24q=Search&ctl00%24PlaceHolderMain%24CICContract1%24ddlPulldown=tab&__EVENTTARGET=ctl00%24PlaceHolderMain%24CICContract1%24gvSSP&__LASTFOCUS=&__VIEWSTATE=%2F 

...massive viewstate... 

    %3D&__VIEWSTATEGENERATOR=E6DD55AA&__EVENTVALIDATION=%2FwEWKwK7ur20CQKpuunwCgLbzK2CBQKBio7OBALDpsvcBQK6mIPlBQLa0ZnPCgLmidHRCQKu%2FbCaDQKvg%2BHxDwKl%2FYSaDQK87ov7BQKV8JfxAQKdo6DlBgLSppvcBQLFutGoAwK3suC5CgK3spS5CgK3sui5CgK3svC5CgK3suS5CgK3svi5CgK3ssy5CgK3ssC5CgLZuKSJCwKykYb0DgKrq%2FH8DAK3zM7sDALA%2BfaWBAKYyYezCwK3suC5CgK3spS5CgK3sui5CgK3svC5CgK3suS5CgK3svi5CgK3ssy5CgK3ssC5CgLZuKSJCwKykYb0DgKrq%2FH8DALl54b0BgK%2FjseDBA0f8JbX2FIE%2F7%2FP1ojwVriOGXif&__ASYNCPOST=true&"; 

    byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body); 
    request.ContentLength = postBytes.Length; 
    Stream stream = request.GetRequestStream(); 
    stream.Write(postBytes, 0, postBytes.Length); 
    stream.Close(); 

    //Get response to request. 
    response = (HttpWebResponse)request.GetResponse(); 
0

HTML Agility Pack应该可以做到。您可以使用它来模拟可正确激活JavaScript的按钮点击。

像这样的东西可能会奏效(假设你有你的窗体上的webbrowser控制):

var browser = new IE(webBrowser1.ActiveXInstance); 
var page2Link = (Link)browser.Elements.Where(e => e.InnerHtml.Contains("Page$2")).First(); 
page2Link.Click();