ASP.NET स्क्रीन परिमार्जन पोस्ट अनुकरण

वोट
1

मैं डाउनलोड करने और एक वेब पेज के HTML पार्स करने के लिए कोशिश कर रहा हूँ। हाल ही में, स्रोत वेबसाइट जावास्क्रिप्ट इसके पीछे के हिस्से को छुपा के लिए एक पृष्ठ पर उनकी जानकारी के सभी होने से ले जाया गया। वहाँ एक सभी दिखाएँ चेक बॉक्स है कि पूरे पेज को देखने के लिये सक्रिय की जरूरत है।

यहाँ वेबसाइट है: स्रोत वेबसाइट

अनिवार्य रूप से मुझे लगता है कि पेज को पुन: प्राप्त स्वचालित करने के बाद चेक बॉक्स क्लिक किया गया है देख रहा हूँ। वर्तमान में, हम एक सी प्रोग्राम है जो वेब पेज डाउनलोड करता है और हमारे पार्स संभालती है। मुझे यकीन है कि यह URL में जावास्क्रिप्ट स्वीकार कर सकते हैं कि इस समस्या को हल करने के लिए इस्तेमाल किया जा सकता है, तो नहीं कर रहा हूँ (मैं एक बुकमार्कलेट का उपयोग URL से जावास्क्रिप्ट कॉल करने के लिए कोशिश की है, लेकिन मैं इसे संभाल करने के लिए प्राप्त करने में सक्षम नहीं था चेक बॉक्स), लेकिन यह अगर यह आसान है एक सी # प्रोग्राम है जो इस संभाल कर सकते हैं लिखने के लिए फ़ाइलों को संभाल कर सकते हैं।

मैं बजाय यह अपने आप कोड एक तीसरी पार्टी के कार्यक्रम का उपयोग सर्वर इस पर चलता है पर कुछ भी स्थापित करने से बचने के लिए के लिए एक रास्ता पसंद करेंगे। कोई भी मदद बहुत ही सराहनीय होगी।


संपादित करें: असल में, मैं कैसे जावास्क्रिप्ट कि कि से जुड़ा हुआ है के लिए कॉल को स्वचालित कर सकते तो मैं html पृष्ठ युक्त वाली हर चीज़ का चेकबॉक्स क्लिक करने के बाद प्रदर्शित किया जाता है प्राप्त कर सकते हैं चेकबॉक्स सभी का चयन करें।


संपादित करें 2: यहाँ Fiddler2 से उत्पादन है:

__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

मैं वर्तमान में सर्वर से 500 त्रुटियों हो रही है। मैं पोस्ट अनुरोध में उन लोगों के GenericWebUserControls के सभी के साथ-साथ शामिल करने की ज़रूरत है? इसके अलावा, मैं EVENTVALIDATION शामिल करने के लिए की जरूरत है?


संपादित करें 3: यहाँ नवीनतम कोड है। मैं अभी भी सर्वर 500 त्रुटियों हो रही है।

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

संपादित करें 4: मैं निर्धारित किया है कि यह POSTDATA स्ट्रिंग है कि सर्वर 500 त्रुटि उत्पन्न कर रहा है। अगर मैं इसे रिक्त स्ट्रिंग बनाने के लिए, यह पूरे वेबपेज आउटपुट। किसी को पता है कि अगर मैं सब कुछ है कि Fiddler2 कि POSTDATA स्ट्रिंग में एक मूल्य था से आया है डाल करने के लिए का सही कर रहा हूँ? इसके अलावा, कि __VIEWSTATE एक अविश्वसनीय रूप से लंबी स्ट्रिंग है। वहाँ कुछ सीमाएं होती हैं या कुछ भी मैं के बारे में यकीन नहीं है?


संपादित करें 5: मैं एक यूआरएल एनकोडर के माध्यम से POSTDATA में इस्तेमाल तार के सभी भाग गया, लेकिन मैं अभी भी सर्वर 500 त्रुटियों हो रही है। वहाँ मेरे लिए किसी भी तरह से डिबग करने के लिए क्यों कि पोस्ट शरीर अमान्य है है?


समाधान: ठीक है, मैं अपने POSTDATA स्ट्रिंग सही नहीं मिल सका, लेकिन जब मैं कच्चे पोस्ट शरीर में चिपकाया यह काम करता है। यह लगता है कि यह काफी अच्छा होगा, लेकिन मेरी चिंता का विषय है कि अगर यह कार्य करते रहेंगे।

23/07/2009 को 16:16
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
3

यही कारण है कि एक asp.net पृष्ठ है। चेकबॉक्स क्लिक का कारण बनता है पेज सर्वर को वापस तैनात किया जाना है। तो बजाय जावास्क्रिप्ट आप के बजाय क्या करना चाहते हैं क्या अनुकरण करने के लिए कोशिश कर रहा से पोस्ट अनुरोध को दिखाने है।

क्योंकि आप आमतौर पर छिपा __ViewState इनपुट से पॉप्युलेट करने यह, ASP.Net पृष्ठों के साथ बेहद मुश्किल है। मैं की तरह एक पैकेट स्निफर का उपयोग करना चाहिये फ़िडलर के रूप में भेजे जाने से वास्तविक अनुरोध देखने के लिए। तुम वहाँ से ViewState कॉपी करने के लिए सक्षम होना चाहिए।

23/07/2009 को 16:22
का स्रोत उपयोगकर्ता

वोट
1

यह जावास्क्रिप्ट एक ही पृष्ठ पर एक पोस्ट शुरू की लग रहा है। Firebug पोस्ट डेटा में निम्नलिखित को दर्शाता है।

__EVENTTARGET: ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox

यही कारण है कि शायद एक अच्छी जगह की तलाश शुरू करने के लिए है।

23/07/2009 को 16:25
का स्रोत उपयोगकर्ता

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