DebugEN
科技森
专注于Java开发~每天都会更新文章~
  1. 首页
  2. Java
  3. 正文

[原创] 如何使用okhttp发起application/json类型的请求

2021年03月03日 1957点热度 0人点赞 0条评论 作者: kejisen

前言

okhttp是一个使用广泛的http库,虽然其在安卓开发使用比较多,但它使用起来简单,不会出现httpclient那样换一个版本使用方式就不同的情况,本文介绍了如何使用okhttp发起application/json类型的请求

编码

首先我们需要创建一个OkHttpClient实例:

 OkHttpClient client = new OkHttpClient().newBuilder().build();

然后构造Request

RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), json);
Request req = new Request.Builder()
                .headers(Headers.of(headers))
                .url(url)
                .post(requestBody)
                .build();

最后发起请求

 Response response = client.newCall(req).execute();
 System.out.println(response.body().string());

OkHttpClient实例是线程安全的,我们可以将其作为一个公共的对象来使用,我封装了这样的类:

public class HttpClientUtil {
    public static final HttpClientUtil INSTANCE = new HttpClientUtil();
    private final OkHttpClient client;

    public HttpClientUtil() {
        client = new OkHttpClient().newBuilder()
                .build();
    }

    public String post(String url, Map<String, String> headers, String json) throws IOException {
        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), json);
        Request build = new Request.Builder()
                .headers(Headers.of(headers))
                .url(url)
                .post(requestBody)
                .build();
        Response response = client.newCall(build).execute();
        return response.body().string();
        }
}

超时时间的设置

超时时间的设置也较为简单,示例如下:

client = new OkHttpClient().newBuilder()
                .connectTimeout(8, TimeUnit.SECONDS)
                .readTimeout(8, TimeUnit.SECONDS)
                .writeTimeout(8, TimeUnit.SECONDS)
                .build();

可以看到它有三个超时时间的设置,相关解释可以自行查看api或者百度

总结

本文介绍了如何使用okhttp发起application/json类型的请求并提供了一个完整的Http工具类

标签: java springboot
最后更新:2021年03月03日

kejisen

保持饥渴的专注,追求最佳的品质

点赞
< 上一篇
下一篇 >

文章评论

取消回复
最新 热点 随机
最新 热点 随机
【原创】记录一次失败的折腾——使用jkeymaster实现的按键监听 【原创】这些年我用过的IDEA插件 【原创】在windows上使用VNC远程连接linux桌面 我在RxJava使用线程池时遇到的问题 [原创文章] Swagger生成pdf格式的接口文档 [个人翻译]Java HTTP工具类的客户端证书认证 [原创] 如何从 Git 的提交历史记录中删除大文件 [翻译] 创建一个只读的Repository接口(Spring Data) [翻译] 反射的用法——用Java调用私有方法 Java 虚拟机最多可以支持多少个线程? 排查Hibernate的慢查询日志–这是查找慢查询的最简单方法 [翻译] 使用apache poi在excel文件中插入一行数据 [翻译] 在Spring 中@EntityScan与@ComponentScan注解有什么区别 [原创] 从QQ音乐网页版扒歌词的补充说明 [原创] 介绍java maven项目的多种打包方式 原创——在Java中生成随机数 将G1垃圾回收的内存使用量减少20%(翻译) [原创] java8 lambda表达式的toMap造成的空指针异常 [原创] 在Spring Boot中使用CommandLineRunner来在启动时执行代码 [转载] Kafka 节点重启失败导致数据丢失的分析排查与解决之道
[个人翻译]Java HTTP工具类的客户端证书认证 [原创] 从QQ音乐网页版扒歌词的补充说明 排查Hibernate的慢查询日志–这是查找慢查询的最简单方法 如何设置Servlet的session超时时间 [原创] java8 lambda表达式的toMap造成的空指针异常 Spring Boot项目修改Tomcat端口号 [原创] 关于Java的Base64编码 [原创] 如何使用okhttp发起application/json类型的请求 [翻译] 反射的用法——用Java调用私有方法 将G1垃圾回收的内存使用量减少20%(翻译) [原创] 如何使用java(javamail)发送带附件的邮件 Spring Boot的@RequestMapping注解中加斜杠与不加斜杠的区别 [翻译] 使用apache poi在excel文件中插入一行数据 [原创] 如何从 Git 的提交历史记录中删除大文件 【原创】这些年我用过的IDEA插件 在Java中生成随机的日期 [转载] Kafka 节点重启失败导致数据丢失的分析排查与解决之道 【原创】在windows上使用VNC远程连接linux桌面 [原创] 在Spring Boot中使用CommandLineRunner来在启动时执行代码 [原创] spring-boot返回json或者xml格式的数据
标签聚合
qq音乐 springboot base64 spring json linux java 歌词 maven elasticsearch

COPYRIGHT © 2020 Kejisen. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS