2010-01-26 26 views
7

Tôi đang cố gắng mô phỏng một POST tới một biểu mẫu trên một máy chủ bên ngoài không yêu cầu bất kỳ xác thực nào và chụp một sting chứa trang kết quả. Đây là lần đầu tiên tôi đã làm điều này vì vậy tôi đang tìm kiếm một số trợ giúp với những gì tôi có cho đến nay. Đây là những gì các hình thức trông giống như:Sử dụng HttpWebRequest để POST tới một biểu mẫu trên máy chủ bên ngoài

<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> 

Đây là những gì mã của tôi trông giống như:

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

Hiện nay, mã trả về "suối là không thể đọc được".

Trả lời

8

Bạn muốn đọc dòng đáp ứng:

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

Bah, đánh tôi với nó;) – jvenema

+2

Xét đại diện của mình, tôi nghĩ anh ấy đánh bại rất nhiều người dân đến nó. –

+0

Có lý do hợp lý nào tại sao điều này sẽ không hoạt động trong một hành động điều khiển không? – 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

Tôi nghĩ bạn có nghĩa là 'response.GetResponseStream'. –

+0

Tôi đã cố gắng làm cho thông báo này trở thành bản chỉnh sửa không thể chỉnh sửa trước đó, đã bị từ chối. HttpWebRequest thậm chí không có GetResponseStream(). – Independent

+0

Đã sửa, cảm ơn! ... –

Các vấn đề liên quan