2010-01-26 32 views
7

我試圖模擬POST到外部服務器上不需要任何身份驗證的窗體,並捕獲包含生成頁面的sting。這是我第一次做到這一點,所以我正在尋找一些我迄今爲止所獲得的幫助。這是形式的樣子:使用HttpWebRequest POST到外部服務器上的窗體

<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 2010-01-26 00:48:20

+2

考慮到他的代表,我想他擊敗了很多人給它。 – 2010-01-26 00:50:08

+0

有沒有任何邏輯的原因,爲什麼這不會在控制器操作? – klkitchens 2013-09-03 22:03:32

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

我想你的意思是'response.GetResponseStream'。 – 2012-03-14 15:52:29

+0

我試圖將此通知作爲不可辨別的編輯,之前被拒絕。 HttpWebRequest甚至沒有GetResponseStream()。 – Independent 2012-03-14 16:48:10

+0

修正了,謝謝! ... – 2012-03-16 01:10:59

相關問題