user220201
user220201

Reputation: 4532

HTTP headers with Android and php with Apache

I have an app that has a web and android components to it and I wish to identify each of them. For this I am explicitly setting the User-Agent in the HTTP headers to something specific to android. But Apache is not passing the User-Agent to me. If I hit the same URL with the browser from the same machine I get a complete list of headers in the php code when I dump $_SERVER array including the HTTP_USER_AGENT. But I get nothing with the android client( except for SCRIPT_NAME and REQUEST_TIME). Does Apache filter stuff out?

I see that if I don't set the headers in the Java code nothing is passed. I use tcpdump and see the following as the User-Agent passed to the server.

User-Agent: Android app1.0\r\n

Any help is greatly appreciated.

EDIT: Here is the code I use to add the User-Agent header in my Android app.

HttpPost postObj = null;

httpHost = new HttpHost(MyBaseURL);

postObj = new HttpPost(urlpath);

postObj.setHeader("User-Agent", "Android app1.0");

HttpResponse response = httpClient.execute(httpHost, postObj);

Thanks,

P

Upvotes: 1

Views: 2018

Answers (1)

Rich
Rich

Reputation: 36806

I just read a little bit about the spec on Wikipedia and the link that wikipedia provides to the actual RFC containing the definition of requirements for UA strings, and there seems to be a requirement that the product and version be separated by a slash. Check these out:

http://en.wikipedia.org/wiki/User_agent#Format

https://www.rfc-editor.org/rfc/rfc1945#section-3.7

Maybe Apache is deciding that your string is an invalid User-Agent string and not considering it. Try changing

Android app1.0

to

Android-app/1.0

Upvotes: 1

Related Questions