I'm writing an Android app and am using the HttpClient library for Android
for all of the communication to the outside world. I've also taken  the
guts of the app and written a Java main so that I can run from the command
line using the regular library.

Everything runs beautifully except for one thing: I need to do Basic
Authentication, and the two platforms, Android and CLI react differently in
the failure case. If Basic Authentication succeeds (e.g. the correct
password is used) things run fine. However, in the case where an incorrect
password is used I get a 401 on CLI (correct), but with the Android library
I'm getting an exception thrown.

I've debugged enough to watch what goes over the wire.

When I run CLI I see this:

 http-outgoing-4 >> "GET / HTTP/1.1[\r][\n]"
 http-outgoing-4 >> "User-Agent: xxx"
 http-outgoing-4 >> "Host: 192.168.1.1[\r][\n]"
 http-outgoing-4 >> "Connection: Keep-Alive[\r][\n]"
 http-outgoing-4 >> "Accept-Encoding: gzip,deflate[\r][\n]"
 http-outgoing-4 >> "Authorization: Basic YWRtaW46YWRtaW4=[\r][\n]"
 http-outgoing-4 >> "[\r][\n]"
 http-outgoing-4 << "HTTP/1.0 401 Unauthorized[\r][\n]"

Running on Android shows this:

 http-outgoing-4 >> "GET / HTTP/1.1[\r][\n]"
 http-outgoing-4 >> "User-Agent: xxx"
 http-outgoing-4 >> "Host: 192.168.1.1[\r][\n]"
 http-outgoing-4 >> "Connection: Keep-Alive[\r][\n]"
 http-outgoing-4 >> "Accept-Encoding: gzip,deflate[\r][\n]"
 http-outgoing-4 >> "Authorization: Basic YWRtaW46YWRtaW4=[\n]"
 http-outgoing-4 >> "[\r][\n]"
 http-outgoing-4 >> "[\r][\n]"
 http-outgoing-4 << "end of stream"
 http-outgoing-4: Close connection


It appears that on Android the sequence of carriage returns and line feeds
is not being sent properly, and the server is getting confused.

It's also worth noting that when the correct password is being sent, the
identical information is sent over the wire, but in both cases, an HTTP 200
is returned.

So what's going on here? Why is behavior different on 2 different
platforms? Is there a bug in the Android library?

-- 
Sander A. Smith
President

Sericon Technology Inc.
71 Marquette Ave.
Toronto, Ontario M6A 1X8
(416)781-3988

Link to me on LinkedIn
http://www.linkedin.com/in/sandersmith

Learn about the dangers of home routers and how you can protect yourself
http://www.RouterCheck.com

http://www.sericontech.com

Reply via email to