OKhttp PUT 示例
Posted
技术标签:
【中文标题】OKhttp PUT 示例【英文标题】:OKhttp PUT example 【发布时间】:2016-04-25 11:31:25 【问题描述】:我的要求是使用PUT
,将标头和正文发送到服务器,这将更新数据库中的某些内容。
我刚刚阅读了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
method,是否有使用okHttp的方法?
我正在使用 okhttp:2.4.0(以防万一),感谢您的帮助!
【问题讨论】:
【参考方案1】:使用put
方法代替post
Request request = new Request.Builder()
.url(url)
.put(body) // here we use put
.addHeader("Authorization", header)
.build();
【讨论】:
【参考方案2】:将您的.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发送put请求?【参考方案3】: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();
【讨论】:
以上是关于OKhttp PUT 示例的主要内容,如果未能解决你的问题,请参考以下文章