2017-03-02 133 views
2

我對Web Post表單有問題。 我已經下載了頁面,我推斷了兩個必需的值(form_build_idform_token),但是一旦發送POST,服務器在POST中將不會收到任何內容。無法發送表單的POST數據

排除錯誤:

  • 錯誤的鏈接(可下載頁面)。
  • 錯誤的外推數據(已驗證)。
  • 錯誤的字符串myParameters(已驗證)。
  • 我已經手動測試了表單,它工作正常。

有些想法嗎?在那裏,我甩了我兩天!

using (WebClientEx wc = new WebClientEx()) 
     { 
      wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 
      string HTMLPage = wc.DownloadString(CREAT_TICKET_URL); 

      string form_build_id = SearchValue(HTMLPage, "<input type=\"hidden\" name=\"form_build_id\"", "value=\"", "\" />"); 
      string form_token  = SearchValue(HTMLPage, "<input type=\"hidden\" name=\"form_token\"", "value=\"", "\" />"); 

      string myParameters = "macchina=" + cmacExtID + "&utente=" + custExtID + "&oggetto=" + Title + "&body=" + Note + "&op=Conferma&form_build_id=" + form_build_id + "&form_token=" + form_token + "&form_id=app_form_new_ticket"; 

      string HtmlResult = wc.UploadString(CREAT_TICKET_URL, myParameters); 
     } 

注:WebClientEx類繼承的WebClient。我將這種方法用於其他形式,如登錄和工作。

最後一個問題是:如果這種方法是錯誤的,那麼執行這個操作序列的最好方法是「下載頁面,從HTML中提取值,發送表單」?

回答

1

問題是標題! 頭文件應該爲每個調用設置,而我認爲它只是第一次設置就足夠了。

using (WebClientEx wc = new WebClientEx()) 
    { 
     wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 
     string HTMLPage = wc.DownloadString(CREAT_TICKET_URL); 

     string form_build_id = SearchValue(HTMLPage, "<input type=\"hidden\" name=\"form_build_id\"", "value=\"", "\" />"); 
     string form_token  = SearchValue(HTMLPage, "<input type=\"hidden\" name=\"form_token\"", "value=\"", "\" />"); 

     string myParameters = "macchina=" + cmacExtID + "&utente=" + custExtID + "&oggetto=" + Title + "&body=" + Note + "&op=Conferma&form_build_id=" + form_build_id + "&form_token=" + form_token + "&form_id=app_form_new_ticket"; 

     wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 
     string HtmlResult = wc.UploadString(CREAT_TICKET_URL, myParameters); 
    }