17 android android-networking androidhttpclient retrofit okhttp
我的要求是使用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);
}
Run Code Online (Sandbox Code Playgroud)
我试图搜索okHttp示例使用PUT没有成功,如果我需要使用PUT方法是否还有使用okHttp?
我正在使用okhttp:2.4.0(以防万一),感谢任何帮助!
Mar*_*nde 11
改变你.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);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 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());
Run Code Online (Sandbox Code Playgroud)
由于 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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11609 次 |
| 最近记录: |