i want to build an android app for my wordpress website using wp-api plugin. how can i send HttpRequest(GET) and recive response in Json?
Asked
Active
Viewed 7.8k times
14
-
1http://developer.android.com/training/volley/index.html – Itzik Samara Jan 09 '16 at 08:06
-
you can use this http://stackoverflow.com/a/8655039 – user1140237 Jan 09 '16 at 08:10
3 Answers
31
Use this function to get JSON from URL.
public static JSONObject getJSONObjectFromURL(String urlString) throws IOException, JSONException {
HttpURLConnection urlConnection = null;
URL url = new URL(urlString);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(10000 /* milliseconds */ );
urlConnection.setConnectTimeout(15000 /* milliseconds */ );
urlConnection.setDoOutput(true);
urlConnection.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
String jsonString = sb.toString();
System.out.println("JSON: " + jsonString);
return new JSONObject(jsonString);
}
Do not forget to add Internet permission in your manifest
<uses-permission android:name="android.permission.INTERNET" />
Then use it like this:
try{
JSONObject jsonObject = getJSONObjectFromURL(urlString);
//
// Parse your json here
//
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}

Lin
- 497
- 5
- 15

Asad Haider
- 504
- 1
- 5
- 17
-
2
-
At least two major errors here. 1. `urlConnection.setDoOutput(true);` changes request to `POST` method. 2. It effectively executes two requests, `new InputStreamReader(url.openStream()` opens `url` once again, disregarding `urlConnection` and all of its properties. 3. `sb.append(line + "\n")` constructs an excess `String`. – Victor Sergienko Sep 10 '17 at 22:30
14
Try below code to get json from a URL
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget= new HttpGet(URL);
HttpResponse response = httpclient.execute(httpget);
if(response.getStatusLine().getStatusCode()==200){
String server_response = EntityUtils.toString(response.getEntity());
Log.i("Server response", server_response );
} else {
Log.i("Server response", "Failed to get server response" );
}

Ijas Ahamed N
- 5,632
- 5
- 31
- 53
-
3
-
2@Tarion just add `useLibrary 'org.apache.http.legacy'` in your app level build.gradle file in `android` block above `defaultConfig`. – Mohammedsalim Shivani May 27 '17 at 10:07
-
this is a deprecated method. Android studio will give you warning over it. Consider using volley for network requests. see https://developer.android.com/training/volley/simple – kPieczonka Jan 14 '19 at 16:51
0
try {
String line, newjson = "";
URL urls = new URL(url);
try (BufferedReader reader = new BufferedReader(new InputStreamReader(urls.openStream(), "UTF-8"))) {
while ((line = reader.readLine()) != null) {
newjson += line;
// System.out.println(line);
}
// System.out.println(newjson);
String json = newjson.toString();
JSONObject jObj = new JSONObject(json);
}
} catch (Exception e) {
e.printStackTrace();
}

raj
- 2,088
- 14
- 23