как отправить HttpRequest и получить ответ Json в Android?

Я хочу создать приложение для Android для своего веб-сайта WordPress с помощью плагина wp-api. как я могу отправить HttpRequest (GET) и получить ответ в Json?


person moosavi    schedule 09.01.2016    source источник
comment
developer.android.com/training/volley/index.html   -  person Itzik Samara    schedule 09.01.2016
comment
вы можете использовать этот stackoverflow.com/a/8655039   -  person user1140237    schedule 09.01.2016


Ответы (2)


Попробуйте ниже код, чтобы получить json из 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" );
}
person Ijas Ahamed N    schedule 09.01.2016
comment
Где найти HttpClient? Какой пакет я должен включить? - person Tarion; 07.03.2017
comment
@Tarion просто добавьте useLibrary 'org.apache.http.legacy' в файл build.gradle на уровне приложения в блоке android над defaultConfig. - person Mohammedsalim Shivani; 27.05.2017
comment
это устаревший метод. Студия Android предупредит вас об этом. Рассмотрите возможность использования залпа для сетевых запросов. см. developer.android.com/training/volley/simple - person kPieczonka; 14.01.2019

Используйте эту функцию, чтобы получить JSON из 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);
}

Не забудьте добавить интернет-разрешение в свой манифест

<uses-permission android:name="android.permission.INTERNET" />

Затем используйте его следующим образом:

try{
      JSONObject jsonObject = getJSONObjectFromURL(urlString);
      //
      // Parse your json here
      //
} catch (IOException e) {
      e.printStackTrace();
} catch (JSONException e) {
      e.printStackTrace();
}
person Asad Haider    schedule 09.01.2016
comment
Хорошее решение, не требует импорта http-клиента apache! - person RestingRobot; 20.04.2017
comment
Здесь как минимум две серьезные ошибки. 1. urlConnection.setDoOutput(true); изменяет запрос на POST метод. 2. Эффективно выполняет два запроса, new InputStreamReader(url.openStream() снова открывает url, игнорируя urlConnection и все его свойства. 3. sb.append(line + "\n") создает избыток String. - person Victor Sergienko; 11.09.2017