2010-01-26 14 views
7

Harici bir sunucuda kimlik doğrulaması gerektirmeyen bir form için bir POST benzetmeye çalışıyorum ve sonuçta oluşan sayfayı içeren bir bit yakaladım. Bunu ilk defa yaptığım için, şu ana kadar sahip olduğum şeyler konusunda yardım arıyorum. Bu form göründüğünü gibi:HttpWebRequest öğesini dış sunucudaki bir forma POST olarak kullanma

Bu gibi benim kod benzediğini olduğunu
<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(); 

Halen kod "Akış okunabilir değildi" döndürür.

cevap

8

Sen Tepki akışı okumak istiyorum:

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

Bah, beni alt;) – jvenema

+2

onun temsilcisi göz önüne alındığında, ben onun kendisine bir sürü insan yener düşünüyorum. –

+0

Bunun bir denetleyici eyleminde işe yaramayacağının mantıklı bir nedeni var mı? – 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

Bence "response.GetResponseStream" demek istiyorsunuz. –

+0

Bu bildirimi daha önce reddedilemeyen bir düzenleme olarak yapmaya çalıştım. HttpWebRequest, GetResponseStream() 'i bile içermiyor. – Independent

+0

Sabit, teşekkürler! ... –

İlgili konular