2017-03-02 3 views
2

웹 포스트 양식에 문제가 있습니다. 페이지를 다운로드 한 후 두 필수 값 (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 클래스는 웹 클라이언트를 상속합니다. 나는이 접근 방식을 로그인과 작업 같은 다른 형식에 사용했습니다.

마지막 질문은 :이 접근 방식이 잘못된 경우 "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); 
    }