Dimitris Makris
Dimitris Makris

Reputation: 5183

HTTP GET url with Json parameters in Android

I am having the following API call:

http://rollout.gr/api/?query={%22search%22:%22places%22,%22page%22:1}

This API call is executed correctly in my browser. But when I use a DefaultHttpClient to execute this url in my Android application, I get a null response.

I suppose the problem is the JSON data in the HTTP url. Thus, I would like to ask which is the proper way to handle such url in an Android application?

Thanks a lot in advance!

Upvotes: 0

Views: 3406

Answers (3)

Paul-Jan
Paul-Jan

Reputation: 17278

The accolades aren't valid URL characters. The browser is userfriendly enough to automatically URL-encode them, but DefaultHttpClient isn't. The correct line to use from code is:

http://rollout.gr/api/?query=http://rollout.gr/api/?query=%7b%22search%22:%22places%22,%22page%22:1%7d

Note the encoding for the accolades (%7b, %7d).

Upvotes: 1

Paul-Jan
Paul-Jan

Reputation: 17278

Not knowing your particular HTTP initialization code, I'm going to assume you didn't provide an explicit JSON accept header. A lot of REST endpoints require this.

httpget.setHeader("Accept", "application/json");

Upvotes: 0

Ercan
Ercan

Reputation: 3705

Your problem may be the strictmode here. I recommend to do http request in threads or asynctasks. strictmode doesnt let app do http reauest in uithread. maybe your console shows a warning and you get null from http response because of this.

This project may solve your problem:

http://loopj.com/android-async-http/

Upvotes: 0

Related Questions