wake-up-neo.com

OKhttp PUT Beispiel

Meine Anforderung ist, PUT zu verwenden, einen Header und einen Body an den Server zu senden, der etwas in der Datenbank aktualisiert.

Ich habe gerade okHttp documentation gelesen und ich habe versucht, ihr Beispiel für POST zu verwenden, aber es funktioniert nicht für meinen Anwendungsfall (Ich glaube, es liegt daran, dass der Server die Verwendung von PUT anstelle von POST erfordert.) .

Dies ist meine Methode mit 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);
    }

Ich habe versucht, mit PUT nach okHttp-Beispielen zu suchen, ohne Erfolg. Wenn ich PUTmethod verwenden muss, gibt es trotzdem die Möglichkeit, okHttp zu verwenden?

Ich benutze okhttp: 2.4.0 (nur für den Fall), danke für jede Hilfe!

16
user5812467

Ändern Sie Ihren .post mit .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

Verwenden Sie put Methode anstelle von post

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

OkHttp Version 2.x

Wenn Sie OkHttp Version 2.x verwenden, verwenden Sie Folgendes:

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

Da OkHttp Version 3 FormEncodingBuilder durch FormBody und FormBody.Builder() ersetzt hat, müssen Sie für Version 3.x Folgendes tun:

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