OK, everything works again!
For some reason, the web server on the http server wasn't forwarding
"/<application>/" to "/application/login.aspx" for HttpClient any more, but
was for IE. It worked fine on the https server. However, when I add
"login.aspx" to the URI, it works in both cases.
Thanks again for all the help!
From: "Julius Davies" <[EMAIL PROTECTED]>
Reply-To: "HttpClient User Discussion" <[email protected]>
To: "HttpClient User Discussion" <[email protected]>
Subject: Re: https now works, but http doesnt?!?!
Date: Sat, 2 Dec 2006 13:38:26 -0500
Hi, Jake,
Sounds frustrating!
On 12/2/06, Jake C <[EMAIL PROTECTED]> wrote:
I tried all of that.
I call "client.setState(new HttpState());" before my transactions and
removed the synchronized blocks.
I checked the forms I'm posting to on both servers, and they are identical
except for the __VIEWSTATE value.
You checked the HTML forms? Are they are both using "method=POST" ?
And so in HttpClient you're creating the
"application/x-www-form-urlencoded" RequestEntity and adding it to
your PostMethod.
I print out the URI and the parameters I'm adding. If I paste the URI into
the web browser then add the parameters manually
(<URI>?<Name1>=<Value1>&<Name2>=<Value2>&...) it works just fine!
When you do that (paste a URI into a browser) then you're doing a GET
request, not a POST request. You have to actually click on the
"submit" button of a method=POST form do actually do a post.
I printed out the Headers:
header[0]:User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
SV1;
.NET CLR 1.1.4322)
header[1]:Host=<host>:8080
header[2]:Content-Length=110
header[3]:Content-Type=application/x-www-form-urlencoded
Are these the headers your browser sent? Or that HttpClient sent?
The content length is exactly the right length for all my parameters and
values, with a = between the name and value, and an & between each pair.
The Method is a PostMethod, and my URI is correct. What the heck is going
on? Is there another level of debugging I can turn on to help track this
down?
This is EXTREMELY frustrating! Why should it work for https and not for
http? What could possible be the difference between the two?
Here is the rest of the information I'm printing out:
method=org.apache.commons.httpclient.methods.PostMethod
URI=http://<host>:8080/<app>/
path=/<app>/
query=null
reason=Method not allowed
status=405, Method not allowed
location=null
contentType=Content-Type: text/html
All of this is identical for the https situation except for the URI, which
says https and has no port specified.
Yeah, that doesn't make sense. Another angle to try and learn more
information is to try "telnetting" to your HTTP server and just typing
in the headers and content manually:
telnet <host> 8080
------------------------------------------
POST /<app>/ HTTP/1.1
host: <host>
content-length=7
content-type=application/x-www-form-urlencoded
x=1&y=2
------------------------------------------
--
yours,
Julius Davies
416-652-0183
http://juliusdavies.ca/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
_________________________________________________________________
All-in-one security and maintenance for your PC. Get a free 90-day trial!
http://clk.atdmt.com/MSN/go/msnnkwlo0050000002msn/direct/01/?href=http://clk.atdmt.com/MSN/go/msnnkwlo0050000001msn/direct/01/?href=http://www.windowsonecare.com/?sc_cid=msn_hotmail
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]