2012-05-09 7 views
1
submit_form = agent.get("http://sample.com/NewTask.aspx").form("aspnetForm") do |f| 
    f["ctl00$ContentPlaceHolder1$txtNumber"] = "1234", 
    f["ctl00$ContentPlaceHolder1$cmbText"] = "test", 
    f["ctl00$ContentPlaceHolder1$FUpload$fu"] = "", 
    f["ctl00$ContentPlaceHolder1$btn"] = "test" 
    f.submit(f.button_with(:name => "ctl00$ContentPlaceHolder1$btnOK")) 
end 

이 글은 Ruby 용 mechanize lib를 사용하여 자동 제출 양식에 작성한 코드입니다. 다음과 같이 Mechanize::ResponseCodeError과 함께 다시 나타납니다. 정말 내 코드에 오류가 보이지 않는데, 누군가가 친절하게도 이것이 서버 오류 (서버가 양식 자동 제출을 막는다 고 말했을 때)에 대해 알 수있었습니다.Ruby 폼 자동 제출 Mechanize :: ResponseCodeError

C : /Ruby193/lib/ruby/gems/1.9.1/gems/mechanize-2.4/lib/mechanize/http/agent.rb 29 1 fetch': 500 => Net::HTTPInternalServerError for http://sample.com/NewTask.aspx -- unhandled response (Mechanize::ResponseCodeError) from C:/Ruby193/lib/ruby/gems/1.9.1/gems/mechanize-2.4/lib/mechanize.rb:1207:in post_form 'C에서의 /Ruby193/lib_main.rb : 515 : submit' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/mechanize-2.4/lib/mechanize/form.rb:178:in에서 ' from auto_post.rb : 27 : block in <main>' from (eval):23:in 양식에서' from auto_post.rb : 13 : '에있는 lib/ruby ​​/ gems/1.9.1/gems/PROX 다음

agent.set_proxy 'localhost', 8888 

: '

+0

내부 서버 오류 500이라고 말하면 서버 로그를 확인해야합니다. –

+0

KARASZI István에게 답장을 보내 주셔서 감사합니다. 문제는 서버에 대한 액세스 권한이 없다는 것입니다. 문제를 해결할 수있는 정확한 위치를 찾기 위해 다른 방법이 있습니까? – Tylr

+0

실제 응답을 확인할 수 있습니다. 오류가 내부에있을 수 있습니다 (브라우저에서 'tcpdump'또는 개발자 도구의 네트워크 부분 사용). –

답변

1

당신은 피들러 또는 찰스와 같은 디버깅 프록시를 통해 프록시 필요 y 브라우저를 유사하게 사용하고 요청을 비교하십시오.