如何使用OKHTTP进行发布请求?
我阅读了一些将json发布到服务器的示例。
有人说:
OkHttp是Java提供的HttpUrlConnection接口的实现。它提供用于编写内容的输入流,并且不知道(或不关心)该内容是什么格式。
现在我想用名称和密码参数在URL上做一个普通的帖子。
这意味着我需要自己将名称和值对编码到流中?
我阅读了一些将json发布到服务器的示例。
有人说:
OkHttp是Java提供的HttpUrlConnection接口的实现。它提供用于编写内容的输入流,并且不知道(或不关心)该内容是什么格式。
现在我想用名称和密码参数在URL上做一个普通的帖子。
这意味着我需要自己将名称和值对编码到流中?
根据文档,OkHttp 版本 3 替换为 和 ,因此旧示例将不再有效。FormEncodingBuilder
FormBody
FormBody.Builder()
现在对窗体和多部分实体进行了建模。我们用更强大的组合取代了不透明。
FormEncodingBuilder
FormBody
FormBody.Builder
同样,我们已升级到 、 和 。
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();
}
当前接受的答案已过期。现在,如果您想创建一个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();