ASP.NET Ekran Pençe Mesaj Benzet

oy
1

Ben indirmek ve bir web sayfasının HTML Ayrıştırma çalışıyorum. Son zamanlarda, kaynak web sitesi javascript arkasında onun bir parçası olarak saklamak için tek bir sayfaya kendi tüm bilgilerin taşındı. Tüm sayfayı görüntülemek için aktive ihtiyacı bir Tümünü Göster onay kutusu var.

İşte web sitesi var: Kaynak Sitesi

Esasen ben onay kutusu tıklandığında sonra o sayfayı alınırken otomatikleştirmek için arıyorum. Şu anda, web sayfası indirir ve bizim ayrıştırmayı işleme C programı var. bu sorunu çözmek için kullanılabilir eğer URL içinde javascript kabul edebilir miyim emin değilim (Ben URL'den javascript aranacak bir imleyicisini kullanarak denedim ama bunun üstesinden almak mümkün değildi ) onay kutusunu, ancak bu işleyebilir bir C # program yazmak daha kolay eğer dosyaları işleyebilir.

Ben kendimi bu kod yerine bu üzerinde çalışan sunucu üzerindeki bir şey yüklemek zorunda kalmamak için bir üçüncü taraf programı kullanmak için bir yol tercih ediyorum. Herhangi bir yardım büyük takdir edilmektedir.


Düzenleme: Ben html sayfası içeren her şeyi o onay kutusunu tıkladıktan sonra görüntülenen var kapmak böylece Temelde, bunu bağlıdır javascript çağrısı otomatikleştirebilirsiniz nasıl onay kutusunu Tümünü Seç.


2 düzenleyin: Burada Fiddler2 çıktısı var:

__EVENTTARGET ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox
__EVENTARGUMENT
__LASTFOCUS
__VIEWSTATE (REMOVED DUE TO LENGTH)
__EVENTVALIDATION (REMOVED DUE TO LENGTH)
ctl00$ContentPlaceHolder1$GenericWebUserControl$Organization0 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Initial or Amendment1 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Relief Requested2 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Country3 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Status4 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$StartDate5  
ctl00$ContentPlaceHolder1$GenericWebUserControl$EndDate5    
ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox on

Şu anda sunucudan 500 HATALARI alıyorum. Ben de sonrası isteği bu GenericWebUserControls tüm dahil gerekir mi? Ayrıca ben EVENTVALIDATION dahil etmek gerekiyor?


DÜZENLEME 3: İşte son kod. Hala sunucuyu 500 hataları alıyorum.

private void CreateRequest()
{
    HttpWebRequest httpWebRequest;
    HttpWebResponse httpWebResponse;
    StreamWriter streamWriter;
    Stream webResponseStream;
    StreamReader streamReader;
    string postData;
    string outputHTML;

    postData = String.Format(&__EVENTTARGET={0} + &__VIEWSTATE={1} + &__EVENTVALIDATION=(2)+&ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox=on +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Organization0=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Initial+or+Amendment1=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Relief+Requested2=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Country3=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Status4=ALL,EVENTTARGET, VIEWSTATE, EVENTVALIDATION);

    httpWebRequest = (HttpWebRequest)WebRequest.Create(http://services.cftc.gov/sirt/sirt.aspx?Topic=ForeignPart30Exemptions);
    httpWebRequest.Method = POST;
    httpWebRequest.ContentType = application/x-www-form-urlencoded;
    httpWebRequest.ContentLength = postData.Length;

    streamWriter = new StreamWriter(httpWebRequest.GetRequestStream(), System.Text.Encoding.ASCII);
    streamWriter.Write(postData);
    streamWriter.Close();

    httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

    webResponseStream = httpWebResponse.GetResponseStream();
    streamReader = new StreamReader(webResponseStream);
    outputHTML = streamReader.ReadToEnd();

    Console.WriteLine(outputHTML);
}

DÜZENLEME 4: Ben sunucu 500 hataya neden postData dize olduğunu belirledik. Ben o boş bir dize yaparsanız, bu web sayfasının tamamını çıkarır. Ben postData dizeye bir değeri vardı Fiddler2 geldi şeyi koymak zorunda doğruysa ve eğer bilen var mı? Ayrıca, bu __VIEWSTATE inanılmaz uzun bir dizedir. Herhangi bir sınırlama var ya da ben emin değilim şey var mı?


DÜZENLEME 5: Bir URL kodlayıcı aracılığıyla postData kullanılan dizeleri tüm koştum, ama yine de sunucu 500 hataları alıyorum. Post vücut geçersiz neden hata ayıklamak için benim için herhangi bir yolu var mı?


ÇÖZÜM: Tamam, benim postData dize doğru alamadım ama ham POST gövdesinde yapıştırılan zaman çalışır. Yeterince iyi olacak gibi bu görünüyor, ama bu çalışma devam edecekse benim ilgilendirir.

Oluştur 23/07/2009 saat 16:16
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
3

Yani bir asp.net sayfası. onay kutusunu tıklayarak sayfa sunucuya geri gönderilecek neden olur. Yani daha doğrusu bunun yerine ne yapmak istediğinizi javascript taklit çalışırken daha sonrası isteğini taklit olduğunu.

Genellikle gizli __ViewState giriş doldurmak gerekir, çünkü bu, ASP.Net sayfaları ile herkesin bildiği zordur. Ben böyle bir paket koklayıcı kullanılmasını öneriyoruz Fiddler gönderildikten olarak gerçek istekle görüntülemek için. Oradan ViewState kopyalamak mümkün olmalıdır.

Cevap 23/07/2009 saat 16:22
kaynak kullanıcı

oy
1

Bu JavaScript aynı sayfaya bir POST başlatır görünüyor. Firebug'ın POST veri aşağıdakileri gösteriyor.

__EVENTTARGET: ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox

Muhtemelen seyir başlamak için iyi bir yerdir.

Cevap 23/07/2009 saat 16:25
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more