Intereting Posts
Когда андроид остановит свой процессор без блокировки бодрствования? Выровнять значки панели инструментов справа налево? Как отправлять и получать SMS-сообщения с данными Возможно ли обнаружение устройств Android, расположенных рядом друг с другом React Native 'Modal' Компонент, не охватывающий весь экран на Android при использовании полноэкранной темы Использовать HttpCore + HttpNIO из Apache для конвейерной обработки HTTP на Android? После изменения ориентации экрана диалогFragment появляется, по-видимому, без какого-либо вызова Получение медианы изображения из последовательности изображений с помощью OpenCV Можно изменить текст плавающей подсказки EditText? Поля входа NPE @ android.support.v7.widget.RecyclerView $ LayoutManager.detachViewInternal GoogleApiClient onConnected никогда не звонил на Wearable device Настройка Android NDK для speex Android: опубликовать приложение с различными скриншотами, соответствующими различным языкам? Как изменить файл хоста на виртуальной машине Genymotion из окон?

Пример OKhttp PUT

Мое требование – использовать PUT , отправить заголовок и тело на сервер, который будет что-то обновлять в базе данных.

Я просто прочитал документацию okHttp, и я пытался использовать их пример POST но он не работает для моего использования (я думаю, это может быть потому, что сервер требует, чтобы я использовал PUT вместо POST ) .

Это мой метод с POST :

  public void postRequestWithHeaderAndBody(String url, String header, String jsonBody) { MediaType JSON = MediaType.parse("application/json; charset=utf-8"); RequestBody body = RequestBody.create(JSON, jsonBody); OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .post(body) .addHeader("Authorization", header) .build(); makeCall(client, request); } 

Я попытался найти okHttp-пример, используя PUT без успеха, если мне нужно использовать PUT метод, все равно использовать okHttp?

Я использую okhttp: 2.4.0 (на всякий случай), спасибо за любую помощь!

Измените свой .post на .put

 public void putRequestWithHeaderAndBody(String url, String header, String jsonBody) { MediaType JSON = MediaType.parse("application/json; charset=utf-8"); RequestBody body = RequestBody.create(JSON, jsonBody); OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .put(body) //PUT .addHeader("Authorization", header) .build(); makeCall(client, request); } 

Использовать метод put вместо post

 Request request = new Request.Builder() .url(url) .put(body) // here we use put .addHeader("Authorization", header) .build(); 

OkHttp Version 2.x

Если вы используете OkHttp Version 2.x, используйте следующее:

 OkHttpClient client = new OkHttpClient(); RequestBody formBody = new FormEncodingBuilder() .add("Key", "Value") .build(); Request request = new Request.Builder() .url("http://www.foo.bar/index.php") .put(formBody) // Use PUT on this line. .build(); Response response = client.newCall(request).execute(); if (!response.isSuccessful()) { throw new IOException("Unexpected response code: " + response); } System.out.println(response.body().string()); 

OkHttp Version 3.x

Так как OkHttp версии 3 заменили FormEncodingBuilder на FormBody и FormBody.Builder() , для версий 3.x вы должны сделать следующее:

 OkHttpClient client = new OkHttpClient(); RequestBody formBody = new FormBody.Builder() .add("message", "Your message") .build(); Request request = new Request.Builder() .url("http://www.foo.bar/index.php") .put(formBody) // PUT here. .build(); try { Response response = client.newCall(request).execute(); // Do something with the response. } catch (IOException e) { e.printStackTrace(); }