OKhttp PUT示例

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)


Mau*_*ker 5

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());
Run Code Online (Sandbox Code Playgroud)

OkHttp 版本 3.x

由于 OkHttp 版本 3 替换FormEncodingBuilderFormBodyFormBody.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)