Quantcast
Channel: Appcelerator Developer Center Q&A Tag Feed (titanium.network.httpclient)
Viewing all articles
Browse latest Browse all 13

Android: Problems Posting Data with HTTPClient

$
0
0

Hello,

I want to use the Titanium.Network.HTTPClient object to network an application with a remove server.

My first task is to implement a login screen that uses the remote server to validate the user's username and password. I use the following line to post the entered username and password to the remove server:

xhr.send({"username": username, "password": password});
I use Java EE to implement the remote server. On the server side I can use this code to retrieve the username and password from the request:
String username = request.getParameter("username");
String password = request.getParameter("password");
When the request is sent using the iPhone simulator I can successfully retrieve the username and password from the request. However, when the request is sent from Android, both the retrieved username and password are null.

Digging deeper, I decided to manually read the request's body, as this will tell me the actual contents of the request body. For iPhone, the request body looks like this:

username=iphoneuser&password=iphonepassword
This is exactly what I expect it to be: a query string that's enclosed in the request body.

Doing the same for Android, I find that the request body looks like this:

--MsuFIjcV2DY7bvFKN7_AfNya4Pbtf8
Content-Disposition: form-data; name="password"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
 
androidpassword
--MsuFIjcV2DY7bvFKN7_AfNya4Pbtf8
Content-Disposition: form-data; name="username"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
 
androiduser
--MsuFIjcV2DY7bvFKN7_AfNya4Pbtf8--
While technically the username and password are included in the request body, it's not at all in a form that I expect to see it in, nor is this easily parsed.

Is this expected? Is there a reason why the HTTPClient on Android doesn't send a POST as a query string like iPhone does? Writing a parser to get the request parameters from Android won't be easy, and it would be nice if I didn't have to. This doesn't seem to follow how the XMLHttpRequest object works, which is apparently what HTTPClient is patterned after.

Any comments or suggestions are greatly appreciated.

Thank you!!

-Ryan


Viewing all articles
Browse latest Browse all 13

Latest Images

Trending Articles





Latest Images