如何使用OKHTTP进行发布请求?

2022-08-31 09:53:52

我阅读了一些将json发布到服务器的示例。

有人说:

OkHttp是Java提供的HttpUrlConnection接口的实现。它提供用于编写内容的输入流,并且不知道(或不关心)该内容是什么格式。

现在我想用名称和密码参数在URL上做一个普通的帖子。

这意味着我需要自己将名称和值对编码到流中?


答案 1

根据文档,OkHttp 版本 3 替换为 和 ,因此旧示例将不再有效。FormEncodingBuilderFormBodyFormBody.Builder()

现在对窗体和多部分实体进行了建模。我们用更强大的组合取代了不透明。FormEncodingBuilderFormBodyFormBody.Builder

同样,我们已升级到 、 和 。MultipartBuilderMultipartBodyMultipartBody.PartMultipartBody.Builder

因此,如果您使用的是 OkHttp 3.x,请尝试以下示例:

OkHttpClient client = new OkHttpClient();

RequestBody formBody = new FormBody.Builder()
        .add("message", "Your message")
        .build();
Request request = new Request.Builder()
        .url("https://www.example.com/index.php")
        .post(formBody)
        .build();

try {
    Response response = client.newCall(request).execute();

    // Do something with the response.
} catch (IOException e) {
    e.printStackTrace();
}

答案 2

当前接受的答案已过期。现在,如果您想创建一个post请求并向其添加参数,您应该使用MultipartBody.Builder,因为Mime Craft现在已被弃用

RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("somParam", "someValue")
        .build();

Request request = new Request.Builder()
        .url(BASE_URL + route)
        .post(requestBody)
        .build();

推荐