2010-01-26 6 views
7

인증을 필요로하지 않는 외부 서버의 양식에 POST를 시뮬레이트하고 결과 페이지가 포함 된 스팅을 캡처하려고합니다. 내가 이것을 한 것은 이번이 처음이다. 그래서 나는 지금까지 내가 가진 것에 대한 도움을 찾고있다. 이 형태는 모습입니다 같은 :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

나는 당신이'response.GetResponseStream'을 의미한다고 생각한다. –

+0

나는이 사실을 알아볼 수없는 편집으로 알려주려고했다. HttpWebRequest에도 GetResponseStream()이 없습니다. – Independent

+0

고침, 고마워! ... –

관련 문제