OKhttp PUT 示例
OKhttp PUT example
我的要求是使用 PUT
,向服务器发送一个 header 和一个 body,这将更新数据库中的内容。
我刚刚阅读了 okHttp documentation 并尝试使用他们的 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
搜索 okHttp 示例,但没有成功,如果我需要使用 PUT
方法,是否可以使用 okHttp?
我正在使用 okhttp:2.4.0(以防万一),感谢您的帮助!
Request request = new Request.Builder()
.url(url)
.put(body) // here we use put
.addHeader("Authorization", header)
.build();
将您的 .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
如果您使用的是 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 将 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();
}
我的要求是使用 PUT
,向服务器发送一个 header 和一个 body,这将更新数据库中的内容。
我刚刚阅读了 okHttp documentation 并尝试使用他们的 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
搜索 okHttp 示例,但没有成功,如果我需要使用 PUT
方法,是否可以使用 okHttp?
我正在使用 okhttp:2.4.0(以防万一),感谢您的帮助!
Request request = new Request.Builder()
.url(url)
.put(body) // here we use put
.addHeader("Authorization", header)
.build();
将您的 .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
如果您使用的是 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 将 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();
}