HttpUtils

2023-05-16


package com.rs.zero.crc.common.http;

import com.rs.zero.crc.modulars.common.constants.SysConstantConf;
import com.xiaoleilu.hutool.util.ObjectUtil;
import okhttp3.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.concurrent.TimeUnit;

/**
* HTTP 请求utils
*
* @author RS.LSY Created by IntelliJ IDEA.
* @since 2017/05/02 20:11
*/
public class HttpUtils {


private static Log log = LogFactory.getLog(HttpUtils.class);
private static final MediaType JSON = MediaType.parse("application/mode; charset=utf-8");

/**
* get 请求.
* <p>连接10s超时,写10s,读30s</p>
*
* @param url 请求URL
* @return 请求结果
* @throws IOException 异常
*/
public static String okHttpGet(String url) throws IOException {
log.info("okHttpPost 请求url:" + url);

OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(SysConstantConf.okHttp().getInteger("connectTimeout"), TimeUnit.SECONDS)
.writeTimeout(SysConstantConf.okHttp().getInteger("writeTimeout"), TimeUnit.SECONDS)
.readTimeout(SysConstantConf.okHttp().getInteger("readTimeout"), TimeUnit.SECONDS)
.build();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
} else {
throw new IOException("Unexpected code " + response);
}
}


/**
* OKHttP POST 请求.
* <p>连接10s超时,写10s,读30s</p>
*
* @param url 请求URL
* @param json 请求参数
* @return 请求结果
* @throws IOException IO异常
*/
public static String okHttpPost(String url, String json) throws IOException, InterruptedException {

int maxTimes = SysConstantConf.okHttp().getInteger("maxTimes");
int sleepTime = SysConstantConf.okHttp().getInteger("sleepTime");
int initTimes = 0;

Response response = ssss(url, json);

while (!response.isSuccessful() && maxTimes >= initTimes) {
initTimes++;
response = ssss(url, json);
Thread.sleep(sleepTime);
log.info("正在进行第" + initTimes + "次重试");
log.info("Unexpected code:" + response);
}

if (response.isSuccessful()) {
return response.body().string();
} else {
throw new IOException("Unexpected code " + response);
}

}

private static Response ssss(String url, String json) throws IOException {


log.info("okHttpPost 请求url:" + url);
log.info("okHttpPost 请求json:" + json);
OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(SysConstantConf.okHttp().getInteger("connectTimeout"), TimeUnit.SECONDS)
.writeTimeout(SysConstantConf.okHttp().getInteger("writeTimeout"), TimeUnit.SECONDS)
.readTimeout(SysConstantConf.okHttp().getInteger("readTimeout"), TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build();
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();

return client.newCall(request).execute();

}


/**
* 获取body数据.
*
* @param request HttpServletRequest
* @return body数据
* @throws IOException IOException
*/
public static String getPostBody(HttpServletRequest request) throws IOException {

StringBuilder sb = new StringBuilder();
InputStream is = request.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String s;
while ((s = br.readLine()) != null) {
sb.append(s);
}
if (ObjectUtil.isNotNull(is)) {
is.close();
}
if (ObjectUtil.isNotNull(isr)) {
isr.close();
}
if (ObjectUtil.isNotNull(br)) {
br.close();
}
return sb.toString();
}

}

转载于:https://www.cnblogs.com/guokezhiren/p/9319013.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpUtils 的相关文章

随机推荐

  • [转帖]完美解决NVIDIA最新显卡驱动无法安装。(修改教程篇,各机型都可以)...

    http blog sina com cn s blog 53e2b55e0100lyx2 html 前段时间 xff0c 有兄弟问道为什么Y450 GT130M的显卡安装不了NVIDIA官网的最新显卡驱动 至于为什么 xff0c 张辽不方
  • github,源码,高仿 直播

    仿花田 xff1a 相亲网站 意中人 已在GitHub上开源 从头开始写一款开源app上线 相互学习 SlideMenuControllerSwift swift实现双侧边栏菜单 StepView github 物流信息 iOS 常用控件集
  • 一文搞懂RAM、ROM、SDRAM、DRAM、DDR、flash等存储介质

    一文搞懂RAM ROM SDRAM DRAM DDR flash等存储介质 存储介质基本分类 xff1a ROM和RAM RAM xff1a 随机访问存储器 Random Access Memory xff0c 易失性 是与CPU直接交换数
  • IDEA解决从git上clone代码没有maven依赖的问题

    首先 xff0c 从git上拉取代码 xff1a 我们将新clone下来的项目打开 xff0c 可以发现在git上原本是maven项目的工程 xff0c 没有了maven的结构 xff1a 要解决这个问题 xff0c 我们需要关闭这个项目
  • python plt画图横纵坐标0点重合

    coding utf 8 import numpy as np import matplotlib mlab as mlab import matplotlib pyplot as plt from scipy import optimiz
  • Fiji-imageJ 无法打开

    可能的原因是文件的路径包含中文名称 转载于 https www cnblogs com cmyg p 11408207 html
  • The type name or alias SqlServer could not be resolved.Please check your configuration

    The type name or alias SqlServer could not be resolved Please check your configuration file 检查一下Config文件中包含的dll再dubug文件夹
  • 总结记录一下如何统计CPU使用情况、磁盘利用率

    一 cpu使用率 可以使用 proc stat命中查看 举例 xff1a cat proc stat grep cpu cpu 1391321772 178 2524194226 33711208592 1046582 6540 38867
  • LCD1602屏幕简介(全网最详细教程)

    目录 1 接线说明 2 LCD1602显示原理 3 LCD1602时序分析 4 LCD1602显示一个字符 5 LCD1602显示一行 1 接线说明 第1引脚 xff1a GND为电源地 第2引脚 xff1a VCC接5V电源正极 第3引脚
  • .Net Core 获取上下文HttpContext

    1 先定义一个类 using Microsoft AspNetCore Http namespace BCode Util public class MvcContext public static IHttpContextAccessor
  • XML有关知识

    可扩展标记语言 起初w3c为了严格语法 xff08 html在各个浏览器的恶性竞争下语法已经变得很松散了 xff09 推出了xml 功能 xff1a 存储数据 xff0c 1 配置文件使用 2 在网络中传输 转载于 https www cn
  • pixhawk代码移植到不同stm32芯片

    本文基于pixhawk1 0 1代码 xff0c 移植需要的知识很多 xff0c 一两个文章可说不清楚 xff0c 里面涉及到编译原理 xff0c 操作系统 xff0c stm32 xff0c 计算机组成原理等 xff0c 需要长期积累 x
  • 转 Pycharm及python安装详细教程

    转 xff1a http blog csdn net qq 29883591 article details 52664478 首先我们来安装Python 1 首先进入网站下载 xff1a 点击打开链接 xff08 或自己输入网址https
  • Python基础(6)——实现输入任意多个数,并计算其平均值

    学习了Python相关数据类型 xff0c 函数的知识后 xff0c 利用字符串的分割实现了输入任意多个数据 xff0c 并计算其平均值的小程序 思路是接收输入的字符串 xff0c 以空格为分隔符 xff0c 将分割的数据存入列表 xff0
  • 校园网破解

    今天刷酷安看到了校园网破解 xff0c 正好有时间研究下 首先了解一下校园网的机制 平时在家用的wifi均为外部网进来接路由器LAN端口 xff0c 在路由器里填入你的宽带账号密码 xff0c 开启DHCP即可 这里的校园进来插到了LAN口
  • 绝命毒师第一季/全集Breaking Bad迅雷下载

    本季Breaking Bad Season 1 2008 看点 xff1a 新墨西哥州的高中化学老师沃尔特 H 怀特 xff08 布莱恩 科兰斯顿 Bryan Cranston 饰 xff09 是拮据家庭的唯一经济来源 他大半生安分守己 x
  • Linux 释放socket资源,LwIP使用select,close socket资源释放不完全问题

    这篇文章本应该在4月就写好的 xff0c 但是博客评论系统一直没有搭建好 xff0c 走了很多弯路 xff0c 现在好了 xff0c delay这么久 xff0c 终于要要补过来了 自建博客 xff1a 金宝的博客 该文章完全原创 xff0
  • __FILE__,__LINE__,__DATE__,__TIME__ c++常用的预定义名字

    C 43 43 有四个常用的预定义名字 xff0c 分别为 FILE LINE DATE TIME FILE 记录文件的路径加名称 LINE 记录文件已经被编译的行数 DATE 记录文件的编译日期 TIME 记录文件的编译时间 可以当作变量
  • 串口拓展

    今天桌子下面找出一个破电路板看到一颗芯片GM8125 xff0c 这个芯片主要功能就是拓展串口 GM8125可以将一个全双工的标准串口扩展成5个标准串口 xff0c 并能通过外部引脚控制串口扩展模式 xff1a 单通道工作模式和多通道工作模
  • HttpUtils

    package com rs zero crc common http import com rs zero crc modulars common constants SysConstantConf import com xiaoleil