[Android] OkHttp Library - NetworkOnMainThreadException при простой записи



Answers

Согласно документам OkHttp: он поддерживает как синхронные блокирующие вызовы, так и асинхронные вызовы с обратными вызовами. Ваш пример находится в основном потоке и Android, так как версия 3.0 выдает это исключение, если вы пытаетесь делать сетевые вызовы в основном потоке

Лучше использовать его вместе с модификацией и Gson: http://square.github.io/retrofit/ https://code.google.com/p/google-gson/

Вот примеры: http://engineering.meetme.com/2014/03/best-practices-for-consuming-apis-on-android/ http://heriman.net/?p=5

Question

Я хочу использовать OkHttp- библиотеку для работы в сети на Android. Я начал с простого примера, как написано на их веб-сайте:

public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {
  RequestBody body = RequestBody.create(JSON, json);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  Response response = client.newCall(request).execute();
  return response.body().string();
}

С помощью этого вызова:

String response = post("http://www.roundsapp.com/post", json);

Этот вызов заканчивается NetworkOnMainThreadException .
Я мог бы обернуть вызов с помощью AsyncTask, но, насколько я понимаю из примеров, библиотека OkHttp должна была позаботиться об этом. Я что-то делаю неправильно?




Links