java中 ok的用法_Java-http请求工具-OkHttp用法

Java-http请求工具-OkHttp用法

前言:一般Java项目后端发送请求都使用http,最近项目里面大佬建议把http都改成okhttp3(OkHttpClient)。故今日记录部分常用发送方式。

代码:为了便于以后使用,这里封装一个OkHttpUtil的工具类

1、先导入jar包:

dependency

groupIdcom.squareup.okhttp3/groupId

artifactIdokhttp/artifactId

version3.9.0/version

/dependency

2、OkHttpUtil的工具类:

package cn.wj.fdata.util;

import com.alibaba.fastjson.JSON;

import java.io.File;

import java.util.Map;

import java.util.concurrent.TimeUnit;

import lombok.extern.slf4j.Slf4j;

import okhttp3.FormBody;

import okhttp3.MediaType;

import okhttp3.MultipartBody;

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.RequestBody;

import okhttp3.Response;

import org.apache.commons.lang3.exception.ExceptionUtils;

@Slf4j

public class OkHttpUtil {

public static final MediaType jsonType = MediaType.parse("application/json; charset=utf-8");

public static final MediaType mediaType = MediaType.parse("application/octet-stream");

public final OkHttpClient okHttpClient = new OkHttpClient.Builder()

.connectTimeout(8000, TimeUnit.MILLISECONDS)

.readTimeout(8000, TimeUnit.MILLISECONDS)

.build();

/**

* 发送post请求通过Form表单形式

*

* @param reqUrl 请求url

* @param mapParam 请求参数

*

*/

private void sendPostByForm(String reqUrl, MapString,String mapParam){

try {

long startTime = System.currentTimeMillis();

//循环form表单,将表单内容添加到form builder中

FormBody.Builder formBody = new FormBody.Builder();

for (Map.EntryString, String m : mapParam.entrySet()) {

String name = m.getKey();

String value = m.getValue()+"";

formBody.add(name, value);

}

//构建formBody(formBody.build()),将其传入Request请求中

Request.Builder builder = new Request.Builder().url(reqUrl).post(formBody.build());

try(Response response = okHttpClient.newCall(builder.build()).execute()){

String body = response.body().string();

log.info("{} response body:{}", reqUrl.substring(reqUrl.lastIndexOf("/") + 1),

body);

}catch(Exception e){

log.error("调用接口出错\n"+ ExceptionUtils.getMessage(e));

}finally{

long endTime = System.currentTimeMillis();

log.info("{} cost time:{}", reqUrl.substring(reqUrl.lastIndexOf("/") + 1),

(endTime - startTime));

}

} catch (Exception e) {

log.error("error", e);

}

}

/**

* 发送post请求通过JSON参数

*

* @param reqUrl 请求url

* @param param 请求参数

*

*/

private void sendPostByJson(String reqUrl, Object param){

try {

String paramStr = JSON.toJSONString(param);

RequestBody requestBody = RequestBody.create(jsonType, paramStr);

long startTime = System.currentTimeMillis();

Request.Builder builder = new Request.Builder().url(reqUrl).post(requestBody);

try(Response response = okHttpClient.newCall(builder.build()).execute()){

String body = response.body().string();

}catch(Exception e){

log.error("调用接口出错\n"+ ExceptionUtils.getMessage(e));

}finally{

long endTime = System.currentTimeMillis();

log.info("{} cost time:{}", reqUrl.substring(reqUrl.lastIndexOf("/") + 1),

(endTime - startTime));

}

} catch (Exception e) {

log.error("error", e);

}

}

/**

* 上传文件

*

* @param reqUrl 请求url

* @param file 上传的文件

* @param fileName 文件名称

*

*/

public void uploadFile(String reqUrl, File file, String fileName) {

try {

RequestBody fileBody = RequestBody.create(mediaType, file);

RequestBody requestBody = new MultipartBody.Builder()

.setType(MultipartBody.FORM)

.addFormDataPart("fileName", fileName)

.addFormDataPart("file", fileName, fileBody).build();

long startTime = System.currentTimeMillis();

Request.Builder builder = new Request.Builder().url(reqUrl).post(requestBody);

try(Response response = okHttpClient.newCall(builder.build()).execute()){

String body = response.body().string();

}catch(Exception e){

log.error("调用接口出错\n"+ ExceptionUtils.getMessage(e));

}finally{

long endTime = System.currentTimeMillis();

log.info("{} cost time:{}", reqUrl.substring(reqUrl.lastIndexOf("/") + 1),

(endTime - startTime));

}

} catch (Exception e) {

log.error("error", e);

}

}

}

参考文章:

文章1

文章2

完!

Java-http请求工具-OkHttp用法 相关文章

轻量级压测工具hey

项目Hub地址 https://github.com/rakyll/hey 二进制安装 Linux 64-bit: https://storage.googleapis.com/hey-release/hey_linux_amd64Mac 64-bit: https://storage.googleapis.com/hey-release/hey_darwin_amd64Windows 64-bit: https://storage.googleapis.

Jenkins常用构建工具

Jenkins构建工具集成 Maven Maven下载地址 安装步骤: # 解压[root@C7-01 ~]# tar xvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/# 软连接[root@C7-01 ~]# cd /usr/local/[root@C7-01 local]# ln -s apache-maven-3.6.3 maven# 添加环境变量[root@C7-01

Unity3D_从零开始设计一个RPG游戏(1)工具类系统设计-Log-01日志输出工具

任何一个游戏都会有一些基础的工具,举例来说,比如事件管理,日志输出工具,状态机,行为树,数学库,MD5工具等等,Log日志工具代码 #if UNITY_EDITOR#define DEBUG#endifusing UnityEngine;using System.Collections.Generic;using System;using System.Di

JVM调优参数、方法、工具总结

垃圾回收有关参数 参数部分,这儿只是做一个总结,更详细更新的内容请参考Oracle官网:JVM的命令行参数参考 处理器组合参数 关于JVM垃圾处理器区别,参考:JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比 -XX:+UseSerialGC = Serial New (DefNew) + Serial Old

专业Java报表工具Stimulsoft Reports.Java常见问题解答(二)

Stimulsoft Reports.Java是一个专为在Java应用程序中的报表进行交互和处理的报表工具。 Java技术允许在不同的平台、不同的操作系统和不同的硬件上使用程序。正因为这样,Stimulsoft Reports.Java现在几乎在任何地方都可用,同时还是一个拥有高质量的功能和用

【小工具】yml文件解析器

闲来无事,自己写了一个yml文件解析器 有什么作用呢我的初步想法是java swing组件的可配置化,节省代码量和工作量。 直接上代码: 1. 先写一个基础公共类Base.java 1 package com.clb.test.ymlparser.model; 2 3 import java.util.ArrayList; 4 import java.

JVM调优参数、方法、工具以及案例总结

这种文章挺难写的,一是JVM参数巨多,二是内容枯燥乏味,但是想理解JVM调优又是没法避开的环节,本文主要用来总结梳理便于以后翻阅,主要围绕四个大的方面展开,分别是JVM调优参数、JVM调优方法(流程)、JVM调优工具、JVM调优案例,调优案例目前正在分析,会在将来补

Struts2

前端代码演示 %--前端带上参数请求struts.xml配置文件中的hello--%%@ page contentType="text/html;charset=UTF-8" language="java" %%@taglib prefix="s" uri="/struts-tags" %htmlhead titleindex/title %@include file="./common.jsp"%/headbodyform clas

被收费绘图工具 PUA 了怎么办来看看这个老实工具吧

本文非常适合 Electron 入门选手,墙裂推荐! 本文作者:HelloGitHub- 蔡文心 大家好!这里是 HelloGitHub 推出的《讲解开源项目》系列,今天给大家带来的一款基于 Electron 和 PHP 实现的 桌面脑图工具 开源项目—— DesktopNaotu 。 不知道各位小伙伴有没

33 Spring Cloud Zuul过滤器介绍及使用(传递数据、拦截请求和异常处理)

在教程《Zuul网关的介绍及使用》中一开始就介绍过,Zuul 可以实现很多高级的功能,比如限流、认证等。想要实现这些功能,必须要基于 Zuul 给我们提供的核心组件“过滤器”。 过滤器类型 Zuul 中的过滤器跟我们之前使用的 javax.servlet.Filter 不一样,javax

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值