2017-03-15 47 views
1

我想提交一個窗體(通過WebClient - C#WindowsForms),但我還沒有得到它。C# - 如何提交2個不同的窗體和下載PDF文件

我的HTTP頁面順序是:Username_Form> Password_Form>下載PDF文件

<!-- 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文件。

問題是我沒有收到第一頁中的提交。我做:

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

     } 

但是我的「responseString」是所有形式充滿了完全相同的網頁(輸入型=「文本」名稱=「用戶名」值=「用戶01」),並提交不發生,就像我無法看到或與第二頁(Password_Form.html)交互。

有什麼錯誤,我失蹤了?

回答

0

您可能想檢查迴應並查看它是否返回302狀態。如果是,那麼你可以轉到下一頁,在服務器端成功設置值。你在這裏做的事情需要你手動跟蹤重定向。

+0

謝謝@GrokSrc,但是當我使用'WebClient'時我無法獲得狀態。雖然我一直在嘗試:'var urlSenha =「http://test_something.com:8080/AgenciaWeb/autenticar/validarSenha.do」; var valuesSenha = new NameValueCollection(); valuesSenha [「senha」] = 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