私の要件は、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);
}
私はPUT
methodを使用する必要がある場合にPUT
methodを使用して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);
}
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は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();
}
_