http请求方式-OkHttpClient
http请求方式-OkHttpClient
- import com.example.core.mydemo.http.OrderReqVO;
- import okhttp3.*;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.util.CollectionUtils;
- import java.io.IOException;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- public class OkHttpClient {
- private static Logger log = LoggerFactory.getLogger(OkHttpClient.class);
- private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
- private volatile static okhttp3.OkHttpClient client;
- private static final int MAX_IDLE_CONNECTION = 2;
- private static final long KEEP_ALIVE_DURATION = 2;
- private static final long CONNECT_TIMEOUT = 1000;
- private static final long READ_TIMEOUT = 3000;
- /**
- * 单例模式(双重检查模式) 获取类实例
- *
- * @return client
- */
- private static okhttp3.OkHttpClient getInstance() {
- if (client == null) {
- synchronized (okhttp3.OkHttpClient.class) {
- if (client == null) {
- client = new okhttp3.OkHttpClient.Builder()
- .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)
- .readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
- .connectionPool(new ConnectionPool(MAX_IDLE_CONNECTION, KEEP_ALIVE_DURATION,
- TimeUnit.MINUTES))
- .build();
- }
- }
- }
- return client;
- }
- public static String syncPost(String url, String json) throws IOException {
- RequestBody body = RequestBody.create(JSON, json);
- Request request = new Request.Builder()
- .url(url)
- .post(body)
- .build();
- try {
- Response response = OkHttpClient.getInstance().newCall(request).execute();
- if (response.isSuccessful()) {
- String result = response.body().string();
- log.info("syncPost response = {}, responseBody= {}", response, result);
- return result;
- }
- String result = response.body().string();
- log.info("syncPost response = {}, responseBody= {}", response, result);
- throw new IOException("三方接口返回http状态码为" + response.code());
- } catch (Exception e) {
- log.error("syncPost() url:{} have a ecxeption {}", url, e);
- throw new RuntimeException("syncPost() have a ecxeption {}" + e.getMessage());
- }
- }
- public static String syncGet(String url, Map<String, Object> headParamsMap) throws IOException {
- Request request;
- final Request.Builder builder = new Request.Builder().url(url);
- try {
- if (!CollectionUtils.isEmpty(headParamsMap)) {
- final Iterator<Map.Entry<String, Object>> iterator = headParamsMap.entrySet()
- .iterator();
- while (iterator.hasNext()) {
- final Map.Entry<String, Object> entry = iterator.next();
- builder.addHeader(entry.getKey(), (String) entry.getValue());
- }
- }
- request = builder.build();
- Response response = OkHttpClient.getInstance().newCall(request).execute();
- String result = response.body().string();
- log.info("syncGet response = {},responseBody= {}", response, result);
- if (!response.isSuccessful()) {
- throw new IOException("三方接口返回http状态码为" + response.code());
- }
- return result;
- } catch (Exception e) {
- log.error("remote interface url:{} have a ecxeption {}", url, e);
- throw new RuntimeException("三方接口返回异常");
- }
- }
- public static void main(String[] args) {
- OrderReqVO data = new OrderReqVO();
- data.setOrderNum("111123333");
- data.setServerType("1");
- String url = "https://域名/接口名称";
- try {
- String resp = syncPost(url, com.alibaba.fastjson.JSON.toJSONString(data));
- System.out.println("resp = " + resp);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
http请求方式-OkHttpClient的更多相关文章
- http常见的get请求方式和set请求方式。
一.Get请求方式 以下是我写的一个用get请求方式获取api工厂中汇率的类. package com.example; import java.io.BufferedReader; import j ...
- 使用 http 请求方式获取 eureka server的服务信息
对于一些系统不能接入 eureka server,又需要访问接入eureka server 的服务. 方法一:直接调用服务的地址是一种实现方式,弊端就是地址是写死的,万一服务地址变更则访问不到. 方法 ...
- 限制action所接受的请求方式或请求参数
原文:http://www.cnblogs.com/liukemng/p/3726897.html 2.限制action所接受的请求方式(get或post): 之前我们在HelloWorldContr ...
- Android——JDK的get请求方式
layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...
- 第二节(RequestMapping请求方式)学习尚硅谷-springmvc视频教程
项目中,创建测试类SpringMVCTest @Controller @RequestMapping("/springmvc1") public class SpringMVCTe ...
- jQuery中ajax的4种常用请求方式
jQuery中ajax的4种常用请求方式: 1.$.ajax()返回其创建的 XMLHttpRequest 对象. $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数 ...
- js中同步与异步请求方式
异步请求方式: $.ajax({ url : 'your url', data:{name:value}, cache : false, async : true, type : "POST ...
- WEB API 中HTTP的get、post、put,delete 请求方式
一.WEB API 中HTTP 请求方式的四个主要方法 (GET, PUT, POST, DELETE), 按照下列方式映射为 CURD 操作: 1.POST 用于新建资源,服务端在指定的URI 上创 ...
- Ajax中的get和post两种请求方式的异同
Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别. 1. get是把参数数据队列加到提交表单的A ...
- HTTP 请求方式: GET和POST的比较(转)
GET和POST是HTTP的两个常用方法. 什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议 ...
随机推荐
- [FAQ] Sortable 拖拽组件, 火狐浏览器中打开新窗口问题
Q:用了 sortable 组件,在火狐浏览器中进行拖拽时,会打开新窗口 ? Sortable组件地址,https://github.com/SortableJS/Sortable 当前处理方式 ...
- VSCode 打开ESP32工程问题
一.无法跳转 问题现象: 打开ESP32工程头文件提示波浪线不跳转,如下图所示: 解决办法: 删除工程中.vsccode文件夹下的所有文件 VSCode 中打开命令行搜索 ESP-IDF 找到`添加 ...
- Solution Set - SAM
讲解一些 SAM 经典的应用.可以结合 字 符 串 全 家 桶 中 SAM 的部分食用. 洛谷P2408 求不同子串个数.在 SAM 中,所有结点是一个等价类,包含的字符串互不相同.结点 \(u\) ...
- 【web安全】隐藏nginx头文件信息
摘要 Nginx作为开源web中间件,被广泛应用.因此源编译或者yum安装,都会带有其原有的nginx版本.很容易被针对,因此,通过修改nginx的源码.隐藏nginx版本和头部信息,保障nginx的 ...
- js图片懒加载,在不做分页的情况下的解决方案
Intersection Observer API 1.注意点 一般都是后端返回数据, 用 this.$nextTick(() => { this.handleScroll(); }); 确保d ...
- VNC 远程桌面很卡,替代方案如下
VNC 远程桌面是一款古老的远程桌面软件,是基于 Unix 和 Linux 操作系统的免费的开源软件.免费开源很好,但是 VNC 也存在一些缺点. 1.VNC 远程桌面很卡 想白嫖 VNC,就要接受卡 ...
- .NET 采用开源软件OpenOffice 实现文档转码服务(word ppt excel)转PDF
前言 前几年做了个项目,里面有个需求,需要在浏览器中在线浏览word excel ppt pdf等文档. 最近又开始研究并记录下来 当时方案: 因为浏览器中阅读文档暂时只能通过pdf方式读取,所以就 ...
- LLM实战:LLM微调加速神器-Unsloth + Qwen1.5
1. 背景 上一篇介绍了基于训练加速框架Unsloth,微调训练Llama3的显卡资源占用及训练时间对比. 近期Unsloth新增了Qwen1.5的模型适配,因此本qiang~马不停蹄地又进行了一次实 ...
- C#的GroupBy方法是如何工作的
前言:先贴结果 GroupBy方法是如何工作的? 一.准备6个待分组的学生对象 class student { public string name;//姓名 public int grade;//年 ...
- 微信小程序 canvas 手写签名(2d)
canvas 2d 目前支持预览,不支持真机调试 index.wxml <canvas type="2d" id="canvas" bindtouchmo ...