web-dev-qa-db-ja.com

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);
    }

私はPUTmethodを使用する必要がある場合にPUTmethodを使用してokHttpの例を検索しようとしましたが、成功しませんでした。

私はokhttp:2.4.0(念のため)を使用しています。

18
user5812467

.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);
    }
11

put の代わりに post メソッドを使用します

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

OkHttpバージョン2.x

OkHttpバージョン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バージョン3.x

OkHttpバージョン3はFormEncodingBuilderFormBodyおよび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();
}
_
2
Mauker