如何使用OKHTTP发送post请求?

新手上路,请多包涵

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

有人说:

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

现在我想使用名称和密码参数对 URL 进行正常发布。

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

原文由 user2219372 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

当前接受的答案已过时。现在,如果您想创建一个发布请求并向其添加参数,您应该使用 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();

原文由 Islam Abdalla 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据 文档,OkHttp 版本 3 将 FormEncodingBuilder 替换为 --- FormBodyFormBody.Builder()

Form 和 Multipart 主体现在已建模。我们用更强大的 FormBodyFormBody.Builder 组合替换了不透明的 FormEncodingBuilder 组合。

同样,我们升级了 MultipartBuilder MultipartBody MultipartBody.Part MultipartBody.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();
}

原文由 Mauker 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题