When a request fails, for example due to a BadResponse, it would
be helpful to dump the results, somehow. This is some debugging
code that 'works' but not very well.
res = ::Net::HTTP.new(uri.host, uri.port).start do |http|
yield(http, request) if block_given?
begin
http.request(request)
rescue(Net::HTTPBadResponse)
socket = http.instance_variable_get(:@socket)
puts socket.read_all
raise
end
end
I got an error by submitting the attached request. The output
is:
% rap tap:load /Users/simonchiang/Desktop/request.yml --: tap-http:submit --: dump
I[14:22:31] load /Users/simonchiang/Desktop/request.yml
I[14:22:31] POST https://bmf2.colorado.edu/cgi-bin/go-getter/login.py/handle_login
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Bad request!</title>
<link rev="made" href="mailto:hamady@colorado.edu" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #0000CC; }
p, address {margin-left: 3em;}
span {font-size: smaller;}
/*]]>*/--></style>
</head>
<body>
<h1>Bad request!</h1>
<p>
Your browser (or proxy) sent a request that
this server could not understand.
</p>
<p>
If you think this is a server error, please contact
the <a href="mailto:hamady@colorado.edu">webmaster</a>.
</p>
<h2>Error 400</h2>
<address>
<a href="/">bmf2.colorado.edu</a><br />
<span>Fri Mar 6 14:22:31 2009<br />
Apache/2.2.3 (Linux/SUSE)</span>
</address>
</body>
</html>
I[14:22:31] Net::HTTPBadResponse wrong status line: "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"