okHttpUtil工具类

2023-05-16

pom文件


        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.10.0</version>
        </dependency>

OkHttpUtil类

package com.yuanda.erp9.syn.util;


import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName OKHttpUtil
 * @Description
 * @Date 2022/12/15
 * @Author myq
 */
public class OKHttpUtil {


    public static OkHttpClient client = null;

    static {
        client = new OkHttpClient.Builder()
                .connectTimeout(5L, TimeUnit.SECONDS)
                .readTimeout(20L, TimeUnit.SECONDS)
                .writeTimeout(10L, TimeUnit.SECONDS)
                .retryOnConnectionFailure(true)
                .build();
    }

    public OKHttpUtil() {
    }


    /**
     * @Description: get
     * @Params:
     * @Return:
     * @Author: Mr.myq
     * @Date: 2023/1/611:11
     */
    public static String doGet(String host, String path, Map<String, String> headers, Map<String, String> querys) throws Exception {
        StringBuffer url = new StringBuffer(host + (path == null ? "" : path));
        if (querys != null) {
            url.append("?");
            Iterator iterator = querys.entrySet().iterator();
            while (iterator.hasNext()) {
                Map.Entry<String, String> e = (Map.Entry) iterator.next();
                url.append((String) e.getKey()).append("=").append((String) e.getValue() + "&");
            }
            url = new StringBuffer(url.substring(0, url.length() - 1));
        }
        Request.Builder requestBuilder = new Request.Builder();
        if (headers != null && headers.size() > 0) {
            Iterator iterator = headers.keySet().iterator();
            while (iterator.hasNext()) {
                String key = (String) iterator.next();
                requestBuilder.addHeader(key, (String) headers.get(key));
            }
        }
        Request request = (requestBuilder).url(url.toString()).build();
        Response response = client.newCall(request).execute();
        String responseStr = response.body() == null ? "" : response.body().string();
        return responseStr;
    }


    /**
     * @Description: post
     * @Params:
     * @Return:
     * @Author: Mr.myq
     * @Date: 2023/1/611:11
     */
    public static String doPost(String host, String path, Map<String, String> headers, Map<String, String> querys, Map<String, Object> fromBody) throws Exception {
        StringBuffer url = new StringBuffer(host + (path == null ? "" : path));
        if (querys != null) {
            url.append("?");
            Iterator iterator = querys.entrySet().iterator();
            while (iterator.hasNext()) {
                Map.Entry<String, String> e = (Map.Entry) iterator.next();
                url.append((String) e.getKey()).append("=").append((String) e.getValue() + "&");
            }
            url = new StringBuffer(url.substring(0, url.length() - 1));
        }
        Request.Builder requestBuilder = new Request.Builder();
        if (headers != null && headers.size() > 0) {
            Iterator iterator = headers.keySet().iterator();
            while (iterator.hasNext()) {
                String key = (String) iterator.next();
                requestBuilder.addHeader(key, (String) headers.get(key));
            }
        }
        /**
         * from表单参数
         */
        FormBody.Builder body = new FormBody.Builder();
        fromBody.forEach((k, v) -> {
            body.add(k, String.valueOf(v));
        });
        FormBody formBody = body.build();

        Request build = requestBuilder.url(url.toString()).post(formBody).build();
        Response response = client.newCall(build).execute();
        String responseStr = response.body() == null ? "" : response.body().string();
        return responseStr;
    }

}

调用

package com.yuanda.erp9.syn.helper;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yuanda.erp9.syn.exception.TargetServerException;
import com.yuanda.erp9.syn.util.OKHttpUtil;
import lombok.extern.slf4j.Slf4j;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName VanlinkonHelper
 * @Description
 * @Date 2022/12/15
 * @Author myq
 */
@Slf4j
@Component
public class VanlinkonHelper {


    public static void main(String[] args) {
        JSONObject data = new VanlinkonHelper().getData(1);
        System.out.println(data.toJSONString());
    }


    /**
     * @Description: 获取数据
     * @Params:
     * @Return:
     * @Author: Mr.myq
     * @Date: 2022/12/1515:38
     */
    public JSONObject getData(int page) {
        String s = null;
        Map<String, String> queryMap = new HashMap<>();
        queryMap.put("page", String.valueOf(page));
        queryMap.put("auth_id", "ydcx");
        queryMap.put("secret", "155808dda9a3721cb943df35e1f7fc6a");
        Map<String,String> header = new LinkedHashMap<>();
        header.put("UserAgent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36");
        header.put("Referer","http://www.vanlinkon.com");
        try {
            s = OKHttpUtil.doGet("http://api.vanlinkon.com/", "api/inventories2", header, queryMap);
        } catch (Exception e) {
            e.printStackTrace();
            throw new TargetServerException("okHttp发送get请求失败:" + e);
        }
        return JSONObject.parseObject(s);
    }
}

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

okHttpUtil工具类 的相关文章

随机推荐

  • C++11面向切面编程(AOP)入门指南

    何为AOP 面向切面编程 xff08 AOP xff0c Aspect Oriented Programming xff09 是一种编程范式 xff0c 允许开发者在不修改原有代码的情况下 xff0c 为程序添加额外的功能 什么是面向切面编
  • 车道线识别/Opencv/传统方法

    车道检测 Advanced Lane Finding Project 实现步骤 使用提供的一组棋盘格图片计算相机校正矩阵 camera calibration matrix 和失真系数 distortion coefficients 校正图
  • 2019新买电脑必备软件

    都2019了 xff0c 怎么还要安装这些垃圾软件 xff01 群丫头买了个新电脑 xff0c 为了避免她踩到笔者曾今踩到的坑 xff0c 更舒心的使用电脑 xff0c 为此特写此文 作为一个电脑平凡使用者 xff0c 用过无数的软件 xf
  • Docker与anaconda+jupyter

    Arch docker的安装 pacman 安装docker sudo pacman S docker docker启动 sudo systemctl start docker 设置开机启动docker sudo systemctl ena
  • Opencv目标追踪

    参考 xff1a https www pyimagesearch com 2018 07 30 opencv object tracking 引言 Opencv作为图像处理开源库包含了Object Tracking目标追踪的一些API xf
  • 使用cmake编译,组织C++项目

    文章目录 前言例一例二例三 前言 这篇博客是我对cmake用法的一些经验总结 还很浅显 如果有错误或者更好的方案 欢迎指正 使用方法统一为在build目录中执行 cmake make 我觉得养成外部编译是一个好习惯 例一 目录结构为 lzj
  • Spring Security Oauth2.0认证授权

    基本概念 认证 用户认证就是判断一个用户的身份是否合法的过程 xff0c 用户去访问系统资源时系统要求验证用户的身份信息 xff0c 身份合法方可继续访问 xff0c 不合法则拒绝访问 常见的用户身份认证方式有 用户名密码登录 xff0c
  • C语言实现HTTP的GET和POST请求

    HTTP请求和IP TCP 所谓的HTTP协议是基于IP TCP协议的 xff0c 所以要获取远端的html数据只要创建socket对象就足够了 xff1b HTTP是基于IP TCP加上了网络请求的固定格式 get 请求 include
  • 英伟达GPU安装教程

    英伟达GPU安装教程
  • 四种插头类型:XH、VH、SM、HY

    PH1 25mm HY2 0mm XH2 5 2 54mm xff08 这两个其实是一样的 xff09 VH3 96mm 插头分成三种类型 xff1a XH xff1b VH xff1b SM xff1b HY XH 4Y 是插头 xff1
  • STM32F1C8T6Flash读取音频和DAC播放

    文章目录 一 Flash简介1 Flash原理2 STM32F1中的Flash 二 Flash地址空间的数据读取1 题目要求2 CUbeMX工程建立3 Keil工程修改4 STlink调试说明5 调试运行 三 基于片内Flash的提示音播放
  • C语言中的头文件为什么不能定义变量

    1 前提 在实际项目中 xff0c 会遇到这样的情况 xff0c 在链接阶段 xff0c 会提示定义在头文件中的变量 xff0c 重定义 xff0c 然后将将头文件中的变量定义成static类型 xff0c 然后 xff0c 不报错误了 例
  • Ubuntu16.04安裝ROS

    此文章在前人的基礎上 xff0c 並把安裝遇到的問題寫出來 Ubuntu16 04安装ROS Kinetic详细过程 https blog csdn net weixin 43159148 article details 83375218
  • B-spline的理解与路径规划中的应用及C++代码的实现

    研究项目 xff0c 无人机的路径规划 xff0c 需要用到B样条 xff0c 所以在此写下B spline的结合C 43 43 代码的理解以及在项目中的应用 一 阶数p 阶数 61 所有权重中t的最高次幂 61 控制点数量 1 xff1b
  • Jetson TX2 各个模式

    Jetson TX2 工作模式及相应的CPU和GPU频率 xff1a 上电的时候 xff0c 默认最低功耗模式1 xff0c 风扇不转 1 直接运行home下的jetson clocks sh xff0c 开启最大频率 sudo jetso
  • 网络通信基础知识—网络通信的发展历程

    网络通信基础知识 网络通信的发展历程 xff08 1 xff09 单机阶段 xff08 2 xff09 局域网阶段 xff08 3 xff09 广域网internet阶段 xff08 很多个局域网之间通信 xff09 xff08 4 xff
  • win7下装ubuntu双系统 硬盘安装详细教程

    本文转载自http www linuxidc com Linux 2014 10 108430 htm https jingyan baidu com article e4d08ffdace06e0fd2f60d39 html 在自己安装过
  • ROS导航——配置机器人的导航功能(move_base包)

    中间部分是整个导航的核心部分 xff0c 由move base功能包提供 配置如下 xff1a lt launch gt lt node pkg 61 34 move base 34 type 61 34 move base 34 resp
  • 基于docker安装tensorflow

    最近在自学机器学习 xff0c 大热的Tensorflow自然不能错过 xff0c 所以首先解决安装问题 xff0c 为了不影响本地环境 xff0c 所以本文基于Docker来安装Tensorflow xff0c 我的环境是Ubuntu16
  • okHttpUtil工具类

    pom文件 lt dependency gt lt groupId gt com squareup okhttp3 lt groupId gt lt artifactId gt okhttp lt artifactId gt lt vers