2008-08-25 8 views
30

सी # और एएसपी.नेट का उपयोग करके मैं वेब पेज (फॉर्म) पर कुछ मूल्यों (4 टेक्स्ट बॉक्स) को प्रोग्रामेटिक रूप से भरना चाहता हूं और फिर उन मूल्यों को 'पोस्ट' करना चाहता हूं। मैं यह कैसे करु?आप प्रोग्राम को एक फॉर्म में कैसे भरते हैं और 'पोस्ट' एक वेब पेज कैसे करते हैं?

संपादित करें: स्पष्टीकरण: एक सेवा (www.stopforumspam.com) है जहां आप अपने 'एड' पृष्ठ पर आईपी, उपयोगकर्ता नाम और ईमेल पता जमा कर सकते हैं। मैं अपनी साइट के पेज पर एक लिंक/बटन बनाने में सक्षम होना चाहता हूं जो उन मानों को भर देगा और उन्हें कॉपी/पेस्ट किए बिना जानकारी जमा करेगा और सबमिट बटन पर क्लिक करें।

और स्पष्टीकरण: स्वचालित स्पैम बॉट कैसे फॉर्म भरते हैं और सबमिट बटन पर क्लिक करते हैं यदि वे सी # में लिखे गए थे?

+0

पर [Watin] (http://watin.sourceforge.net/) – SQLMenace

उत्तर

43

आपको लगता है कि का एक नमूना देख सकते हैं: http://en.csharp-online.net/HTTP_Post

असल में, कोड कुछ इस तरह दिखेगा:

WebRequest req = WebRequest.Create("http://mysite/myform.aspx"); 
string postData = "item1=11111&item2=22222&Item3=33333"; 

byte[] send = Encoding.Default.GetBytes(postData); 
req.Method = "POST"; 
req.ContentType = "application/x-www-form-urlencoded"; 
req.ContentLength = send.Length; 

Stream sout = req.GetRequestStream(); 
sout.Write(send, 0, send.Length); 
sout.Flush(); 
sout.Close(); 

WebResponse res = req.GetResponse(); 
StreamReader sr = new StreamReader(res.GetResponseStream()); 
string returnvalue = sr.ReadToEnd(); 
+1

POSTDATA urlencoded होने की जरूरत नहीं हैं एक नजर डालें? –

+0

क्या आप कृपया अनुरोध से लौटाए गए डेटा को एकत्रित करने के बारे में बता सकते हैं? –

+3

उपरोक्त नमूने में, वापसी के अनुरोध में अनुरोध से लौटाया गया डेटा शामिल है। आपके कोड रिटर्न वैल्यू में –

1

देखें पृष्ठ के स्रोत और पोस्टिंग करने के लिए WebRequest वर्ग का उपयोग । आईई ड्राइव करने की जरूरत नहीं है। बस यह पता लगाएं कि आईई सर्वर पर क्या भेज रहा है और उसे दोहराएं। फिडलर जैसे टूल का उपयोग करना इसे और भी आसान बना देगा।

4

आप वेब क्लाइंट पर अपलोडवैल्यूज़ विधि का उपयोग कर सकते हैं - इसकी आवश्यकता है कि यह एक यूआरएल और नेमवैल्यू कोलेक्शन पास कर रहा हो। यह तरीका सबसे आसान है कि मैं पाया है है, और एमएस प्रलेखन एक अच्छा उदाहरण है:

var webClient = new WebClient(); 
Debug.Info("PostingForm: " + url); 
try 
{ 
    byte [] responseArray = webClient.UploadValues(url, nameValueCollection); 
    return new Response(responseArray, (int) HttpStatusCode.OK); 
} 
catch (WebException e) 
{ 
    var response = (HttpWebResponse)e.Response; 
    byte[] responseBytes = IOUtil.StreamToBytes(response.GetResponseStream()); 
    return new Response(responseBytes, (int) response.StatusCode); 
} 

रिस्पांस वर्ग एक सरल आवरण है:
http://msdn.microsoft.com/en-us/library/9w7b4fz7.aspx

यहाँ कुछ त्रुटि हैंडलिंग के साथ एक सरल संस्करण है प्रतिक्रिया शरीर और स्थिति कोड के लिए।

0

मुझे ऐसी स्थिति थी जहां मुझे प्रोग्रामिंग के लिए एचटीएमएल टेक्स्टरेरा से मुफ्त टेक्स्ट पोस्ट करने की आवश्यकता थी और मुझे ऐसे मुद्दे थे जहां मुझे अपनी पैरा सूची में <br /> मिल रहा था।

मेरा समाधान ब्रांड्स अक्षरों और एचटीएमएलकोडिंग के साथ ब्रैड टैग की प्रतिस्थापन केवल सुरक्षित होने के लिए था।

Regex.Replace(HttpUtility.HtmlDecode(test), "(<br.*?>)", "\r\n" ,RegexOptions.IgnoreCase); 
0

आप स्ट्रिंग कहाँ सांकेतिक शब्दों में बदलना:

Encoding.Default.GetBytes (POSTDATA);

उपयोग के बजाय Google API के लिए Ascii:

Encoding.ASCII.GetBytes (POSTDATA);

यह आपके अनुरोध के रूप में ही है और इसी तरह की "--data कर्ल" ... "[यूआरएल]" अनुरोध

1

आप एक पोस्ट भेज सकते हैं/कई मायनों साथ अनुरोध प्राप्त करता है। मदद करने के लिए विभिन्न प्रकार की पुस्तकालय है। मैंने पाया कि यह भ्रमित करने वाला है कि मुझे कौन सा उपयोग करना चाहिए और अंतर क्या हैं।

स्टैक ओवरफ़्लो सर्फिंग के बाद यह सर्वोत्तम उत्तर मैंने पाया। इस सूत्र बताते हैं सब

https://stackoverflow.com/a/4015346/1999720

संबंधित मुद्दे