2017-03-15 17 views
1

WebClient - C# WindowsForms를 통해 양식을 제출하려고하지만 아직받지 못했습니다.두 가지 양식을 제출하고 PDF 파일을 다운로드하는 방법

내 HTTP 페이지 순서는 다음과 같습니다 Username_Form> Password_Form>을 얻을 다음

<!-- Username_Form.html --> 
<form ... action="/AgenciaWeb/autenticar/autenticar.do"> 
    <input type="text" name="username" /> 
    <input type="submit" value="Continue" /> 
</form> 

<!-- Password_Form.html --> 
<form ... action="/AgenciaWeb/autenticar/validarSenha.do"> 
    <input type="password" name="password" /> 
    <input type="submit" value="Login" /> 
</form> 

<!-- Password_Form.html --> 
<div> 
    <a href="PDF_download.pdf">Download</a> 
</div> 

그래서 내가 첫 페이지의 모든 형태를 작성해야 PDF 파일을 다운로드 모든 형태를 채우기 위해 두 번째 페이지로 리디렉션하고 마지막 페이지를 열고 내 PDF 파일을 다운로드하십시오.

문제는 첫 페이지에 제출하지 못하는 것입니다. 그러나 내 'responseString이'작성 모든 형태와 정확히 동일한 페이지 (입력 유형 = "텍스트"이름 = "사용자 이름"값 = "User01과") 인

private void button1_Click(object sender, EventArgs e) 
     { 
      var url = "http://test_something.com:8080/AgenciaWeb/autenticar/autenticar.do"; 

      using (var client = new WebClient()) 
      { 
       var values = new NameValueCollection(); 
       values["username"] = "user01"; 

       var response = client.UploadValues(url, "POST", values); 

       var responseString = Encoding.Default.GetString(response); 

       Console.WriteLine(responseString); 
      } 

     } 

과하지 않습니다 제출 : 내가 뭐하는 거지 두 번째 페이지 (Password_Form.html)를 보거나 대화 할 수없는 것처럼 보입니다.

내가 빠진 부분에 이상이 있습니까?

답변

0

응답을 확인하고 302 상태를 반환하는지 확인하는 것이 좋습니다. 그런 다음 서버 쪽에서 값을 성공적으로 설정하면 다음 페이지로 이동할 수 있습니다. 여기서 수행하는 작업은 수동으로 리디렉션을 수행해야합니다.

+0

@GrokSrc에 감사드립니다.하지만 'WebClient'를 사용하고 있으면 상태를 얻을 수 없습니다. 나는 노력해 왔지만,'var urlSenha = "http://test_something.com:8080/AgenciaWeb/autenticar/validarSenha.do"; var valuesSenha = 새로운 NameValueCollection(); 값 센나 [ "senha"] = 센나; var responseSenha = client.UploadValues ​​(urlSenha, "POST", valuesSenha);'내 (var client = new WebClient())를 사용하고 있지만 ... 잘 작동하지 않았습니다 ... – antoniolpfilho

+0

더 잘할 수 있습니다. HttpWebRequest/HttpWebResponse 쌍 : https://msdn.microsoft.com/en-us/library/a3xa6ys0(v=vs.110).aspx HttpWebResponse.StatusCode를 사용하여 상태를 확인할 수 있습니다. – GrokSrc

+0

HttpWebResquest/HttpWebResponse로 변경되었으며 '200'('OK') 상태가 나타납니다. 나는 그것이 문제가 될 수도 있다고 생각하기 때문에 'JavaScript'를 통해 문제가 리다이렉트/다음 페이지에 제출할 책임이 있다고 생각하기 시작한다 ...이 방법으로 작동하는지 모르겠다. – antoniolpfilho