web-dev-qa-db-fra.com

OKhttp PUT exemple

Mon exigence est d'utiliser PUT, d'envoyer un en-tête et un corps au serveur qui met à jour quelque chose dans la base de données.

Je viens de lire la documentation okHttp et j'essayais d'utiliser leur exemple POST mais cela ne fonctionne pas pour mon cas d'utilisation (je pense que c'est peut-être parce que le serveur nécessite que j'utilise PUT au lieu de POST) .

C'est ma méthode avec 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);
    }

J'ai essayé de rechercher exemple okHttp en utilisant PUTsans aucun succès, si je dois utiliser PUTmethod y at-il de toute façon à utiliser okHttp?

J'utilise okhttp: 2.4.0 (juste au cas où), merci pour toute aide!

16
user5812467

Changez votre .post avec .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);
    }
9
Marcos Casagrande

Utilisez put method au lieu de post

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

OkHttp Version 2.x

Si vous utilisez OkHttp Version 2.x, utilisez les éléments suivants:

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

Comme OkHttp version 3 a remplacé FormEncodingBuilder par FormBody et FormBody.Builder(), vous devez procéder comme suit pour les versions 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();
}
1
Mauker