2010-01-26 7 views
7

मैं बाहरी सर्वर पर एक फॉर्म में एक पोस्ट अनुकरण करने की कोशिश कर रहा हूं जिसके लिए किसी भी प्रमाणीकरण की आवश्यकता नहीं है, और परिणामी पृष्ठ वाले स्टिंग को कैप्चर करें। यह पहली बार है जब मैंने ऐसा किया है इसलिए मैं अब तक जो कुछ हासिल कर रहा हूं उसके साथ कुछ मदद की तलाश में हूं। यह किस रूप में दिखता है जैसे:बाहरी सर्वर पर किसी फ़ॉर्म पर पोस्ट करने के लिए HttpWebRequest का उपयोग

<FORM METHOD="POST" ACTION="/controller" NAME="GIN"> 
<INPUT type="hidden" name="JSPName" value="GIN"> 

Field1: 
<INPUT type="text" name="Field1" size="30" 
       maxlength="60" class="txtNormal" value=""> 

</FORM> 

इस तरह मेरे कोड दिखता है:

ASCIIEncoding encoding = new ASCIIEncoding(); 
    string postData = "Field1=VALUE1&JSPName=GIN"; 
    byte[] data = encoding.GetBytes(postData); 
    // Prepare web request... 
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("https://XXX/controller"); 
    myRequest.Method = "POST"; 
    myRequest.ContentType = "text/html"; 
    myRequest.ContentLength = data.Length; 
    Stream newStream = myRequest.GetRequestStream(); 
    // Send the data. 
    newStream.Write(data, 0, data.Length); 

    StreamReader reader = new StreamReader(newStream); 
    string text = reader.ReadToEnd(); 

    MessageBox.Show(text); 

    newStream.Close(); 

वर्तमान में, कोड लौटाता है "स्ट्रीम पढ़ने योग्य नहीं था।"

उत्तर

8

आप रिस्पांस धारा पढ़ना चाहते हैं:

using (var resp = myRequest.GetResponse()) 
{ 
    using (var responseStream = resp.GetResponseStream()) 
    { 
     using (var responseReader = new StreamReader(responseStream)) 
     { 
     } 
    } 
} 
+0

बाह, मुझे यह करने के लिए हरा;) – jvenema

+2

उसके प्रतिनिधि को देखते हुए, मैं वह इसे करने के लिए बहुत से लोगों को लगता है कि धड़क रहा है। –

+0

क्या कोई तार्किक कारण है कि यह नियंत्रक कार्रवाई में क्यों काम नहीं करेगा? – klkitchens

2
ASCIIEncoding encoding = new ASCIIEncoding(); 

string postData = "Field1=VALUE1&JSPName=GIN"; 
byte[] data = encoding.GetBytes(postData); 

// Prepare web request... 
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("https://XXX/"); 
myRequest.Method = "POST"; 
myRequest.ContentType = "text/html"; 
myRequest.ContentLength = data.Length; 

string result; 

using (WebResponse response = myRequest.GetResponse()) 
{ 
    using (var reader = new StreamReader(response.GetResponseStream())) 
    { 
     result = reader.ReadToEnd(); 
    } 
} 
+0

मुझे लगता है कि आपका मतलब है 'प्रतिक्रिया। GetResponseStream'। –

+0

मैंने इसे पहले एक अनावश्यक संपादन के रूप में अधिसूचित करने की कोशिश की, जिसे अस्वीकार कर दिया गया था। HttpWebRequest में GetResponseStream() भी नहीं है। – Independent

+0

फिक्स्ड, धन्यवाद! ... –

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