对接百度api的工具类:Base64Util,FileUtil,HttpUtil

2023-11-20

对接百度api的工具类:Base64Util,FileUtil,HttpUtil

package com.baidu.ai.aip.utils;

/**
 * Base64 工具类
 */
public class Base64Util {
    private static final char last2byte = (char) Integer.parseInt("00000011", 2);
    private static final char last4byte = (char) Integer.parseInt("00001111", 2);
    private static final char last6byte = (char) Integer.parseInt("00111111", 2);
    private static final char lead6byte = (char) Integer.parseInt("11111100", 2);
    private static final char lead4byte = (char) Integer.parseInt("11110000", 2);
    private static final char lead2byte = (char) Integer.parseInt("11000000", 2);
    private static final char[] encodeTable = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};

    public Base64Util() {
    }

    public static String encode(byte[] from) {
        StringBuilder to = new StringBuilder((int) ((double) from.length * 1.34D) + 3);
        int num = 0;
        char currentByte = 0;

        int i;
        for (i = 0; i < from.length; ++i) {
            for (num %= 8; num < 8; num += 6) {
                switch (num) {
                    case 0:
                        currentByte = (char) (from[i] & lead6byte);
                        currentByte = (char) (currentByte >>> 2);
                    case 1:
                    case 3:
                    case 5:
                    default:
                        break;
                    case 2:
                        currentByte = (char) (from[i] & last6byte);
                        break;
                    case 4:
                        currentByte = (char) (from[i] & last4byte);
                        currentByte = (char) (currentByte << 2);
                        if (i + 1 < from.length) {
                            currentByte = (char) (currentByte | (from[i + 1] & lead2byte) >>> 6);
                        }
                        break;
                    case 6:
                        currentByte = (char) (from[i] & last2byte);
                        currentByte = (char) (currentByte << 4);
                        if (i + 1 < from.length) {
                            currentByte = (char) (currentByte | (from[i + 1] & lead4byte) >>> 4);
                        }
                }

                to.append(encodeTable[currentByte]);
            }
        }

        if (to.length() % 4 != 0) {
            for (i = 4 - to.length() % 4; i > 0; --i) {
                to.append("=");
            }
        }

        return to.toString();
    }
}
package com.baidu.ai.aip.utils;

import java.io.*;

/**
 * 文件读取工具类
 */
public class FileUtil {

    /**
     * 读取文件内容,作为字符串返回
     */
    public static String readFileAsString(String filePath) throws IOException {
        File file = new File(filePath);
        if (!file.exists()) {
            throw new FileNotFoundException(filePath);
        } 

        if (file.length() > 1024 * 1024 * 1024) {
            throw new IOException("File is too large");
        } 

        StringBuilder sb = new StringBuilder((int) (file.length()));
        // 创建字节输入流  
        FileInputStream fis = new FileInputStream(filePath);  
        // 创建一个长度为10240的Buffer
        byte[] bbuf = new byte[10240];  
        // 用于保存实际读取的字节数  
        int hasRead = 0;  
        while ( (hasRead = fis.read(bbuf)) > 0 ) {  
            sb.append(new String(bbuf, 0, hasRead));  
        }  
        fis.close();  
        return sb.toString();
    }

    /**
     * 根据文件路径读取byte[] 数组
     */
    public static byte[] readFileByBytes(String filePath) throws IOException {
        File file = new File(filePath);
        if (!file.exists()) {
            throw new FileNotFoundException(filePath);
        } else {
            ByteArrayOutputStream bos = new ByteArrayOutputStream((int) file.length());
            BufferedInputStream in = null;

            try {
                in = new BufferedInputStream(new FileInputStream(file));
                short bufSize = 1024;
                byte[] buffer = new byte[bufSize];
                int len1;
                while (-1 != (len1 = in.read(buffer, 0, bufSize))) {
                    bos.write(buffer, 0, len1);
                }

                byte[] var7 = bos.toByteArray();
                return var7;
            } finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException var14) {
                    var14.printStackTrace();
                }

                bos.close();
            }
        }
    }
}
package com.baidu.ai.aip.utils;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

/**
 * http 工具类
 */
public class HttpUtil {

    public static String post(String requestUrl, String accessToken, String params)
            throws Exception {
        String contentType = "application/x-www-form-urlencoded";
        return HttpUtil.post(requestUrl, accessToken, contentType, params);
    }

    public static String post(String requestUrl, String accessToken, String contentType, String params)
            throws Exception {
        String encoding = "UTF-8";
        if (requestUrl.contains("nlp")) {
            encoding = "GBK";
        }
        return HttpUtil.post(requestUrl, accessToken, contentType, params, encoding);
    }

    public static String post(String requestUrl, String accessToken, String contentType, String params, String encoding)
            throws Exception {
        String url = requestUrl + "?access_token=" + accessToken;
        return HttpUtil.postGeneralUrl(url, contentType, params, encoding);
    }

    public static String postGeneralUrl(String generalUrl, String contentType, String params, String encoding)
            throws Exception {
        URL url = new URL(generalUrl);
        // 打开和URL之间的连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        // 设置通用的请求属性
        connection.setRequestProperty("Content-Type", contentType);
        connection.setRequestProperty("Connection", "Keep-Alive");
        connection.setUseCaches(false);
        connection.setDoOutput(true);
        connection.setDoInput(true);

        // 得到请求的输出流对象
        DataOutputStream out = new DataOutputStream(connection.getOutputStream());
        out.write(params.getBytes(encoding));
        out.flush();
        out.close();

        // 建立实际的连接
        connection.connect();
        // 获取所有响应头字段
        Map<String, List<String>> headers = connection.getHeaderFields();
        // 遍历所有的响应头字段
        for (String key : headers.keySet()) {
            System.err.println(key + "--->" + headers.get(key));
        }
        // 定义 BufferedReader输入流来读取URL的响应
        BufferedReader in = null;
        in = new BufferedReader(
                new InputStreamReader(connection.getInputStream(), encoding));
        String result = "";
        String getLine;
        while ((getLine = in.readLine()) != null) {
            result += getLine;
        }
        in.close();
        System.err.println("result:" + result);
        return result;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对接百度api的工具类:Base64Util,FileUtil,HttpUtil 的相关文章

  • eclipse导入外部项目后出现红叉解决方法

    eclipse开发工具中 在导入java项目时 有时会出现红叉 的现象 并且会发现里面的程序仍然能正常运行 原因 因为每个电脑上eclipse的环境都不太一样 导入项目后才回有红叉 这时只需要该变一下这个项目的环境就可以了 解决方法 第一步

随机推荐

  • nrm 切换 npm 源

    npm 配置仓库 查看当前仓库配置 npm config list 查看配置 npm config ls l 查看详细配置 可以看到 registry 配置 就是仓库地址 简述修改配置的 3 种方式 1 通过 config 配置 npm c
  • cesium for ue->CesiumUtility

    该模块共18个文件 3152行 含注释 截至2022年11月9日 剩下13个文件 1443行
  • 贝叶斯相关公式(Bayes)

    这里只是记录一下 非常推荐马同学高等数学 文末有原文 点击这里看里面的例一应该是理解贝叶斯公式最好的例子 如果你稍微有一些基础 我觉得文末第二个链接中的例一更加适合你 代数推导 1 贝叶斯公式 是根据条件概率推导的 P A B P AB P
  • 基于ssm+ajax实现的多条件带省略号分页

    ssm ajax layui实现的多条件分页源码 案列种包含数据库和前后台完整源码 演示地址 ssm ajax实现的多条件分页源码 前台核心代码 layui use form function var form layui form for
  • 一些论文审稿方面的体会

    本人小硕在读 老师也让帮忙审了论文 多是与自己领域相关的 老师让多学习学习 每次审论文都感觉诚惶诚恐 要是提的问题太多吧 感觉万一给拒了作者该多伤心啊 这挑的问题少吧 这明显对不起更多的人嘛 大体总结一下自己遇到的问题吧 一 现在论文提交量
  • Win10+CUDA8.0+Visual Studio2013安装、环境配置教程

    最近刚开始接触opencv的GPL编程 所以自己搜了下网上有关配置CUDA的过程 经过摸索整理 配置成功 现将教程整理如下 1 下载CUDA安装包 下载地址https developer nvidia com cuda downloads
  • 使用CUDA和CUFFT进行快速1D卷积的示例

    使用CUDA和CUFFT进行快速1D卷积的示例 在计算机视觉 数字信号处理和机器学习中 卷积是一种常见的操作 然而 卷积操作通常需要大量计算 因此需要一种高效的方法来完成 CUDA和CUFFT可以用于对使用FFT的快速1D卷积进行加速 在本
  • [Unity XLua]热更新XLua入门(一)-基础篇

    Aladdin XLua 前言 前段时间腾讯开源了一个内部热更框架XLua在Unity开发群里引起一阵热议 也受到广大开发者的热捧 然后我当然也抱着好奇的心去学习学习 后面也会将扩展之后的工程放在git上 大家一起学习交流 在此感谢XLua
  • c3p0数据库连接池死锁问题和mysql重连,连接丢失

    c3p0参数解释 最常用配置 initialPoolSize 连接池初始化时创建的连接数 default 3 取值应在minPoolSize与maxPoolSize之间 c3p0 initialPoolSize 10 minPoolSize
  • 敏捷项目管理ACP解析会笔记

    互联网时代企业环境现状 产品生命周期急剧缩短 市场环境变化太快 客户不满意 客户 团队 产品 产品需求界定不清 什么是敏捷项目管理 低成本 快速度 高质量 交付更高质量 敏捷宣言 个体和交互 重于过程和工具 可工作的软件 重于面面俱到的文档
  • Java高并发处理方案

    java高并发 如何解决 什么方式解决 一 什么是高并发 二 高并发解决思路 三 高并发解决方案 一 什么是高并发 1 1 高并发 High Concurrency 是互联网分布式系统架构设计中必须考虑的因素之一 它通常是指 通过设计保证系
  • 实现一个函数,判断一个数是不是素数

    include
  • Stream实现List和Map互转总结

    本文来说下Stream实现List和Map互转总结 文章目录 实体类 Map转List代码 List转Map代码 实体类 本篇介绍Stream流List和Map互转 同时在转换过程中遇到的问题分析 package cn wideth col
  • 找到专业的软件外包开发公司

    今天给大家分享怎么样找软件开发公司开发 而且找到的是既负责又专业的 那怎么去找呢 看哪些方面 北京木奇移动技术有限公司 专业的软件外包开发公司 欢迎交流合作 1 案例看实力 在选择软件定制开发公司时 必须要留意对方的案例如何 有否做过大型的
  • 理解HTTP headers之Expires、Cache-Control、IF-Modified-Since

    一 什么是Http headers 当你在浏览器地址栏里键入一个url 你的浏览器将会类似如下的http请求 GET tutorials other top 20 mysql best practices HTTP 1 1 Host net
  • Hive函数row_number实现

    需求 查询一批用户最后三次登陆时间 ip数据 理解需求是实现分组取前n个值 实现方式是先按照uid字段升序或倒序 时间字段倒序排序数据集合 然后遍历数据集合 用row number函数遍历uid字段 相同则row number值 1 取ro
  • el-table添加border边框线不显示

    el table添加border属性 使用作用域插槽 会不现实左边的边框线 或者右边的边框线 总结问题 1 固定了表格的高度 height 250 把高度去掉
  • JavaScript(函数,作用域和闭包)

    目录 一 什么是函数 1 1 常用系统函数 1 2 函数声明 1 3 函数表达式 二 预解析 2 1 函数自调用 2 2 回调函数 三 变量的作用域 3 1 隐式全局变量 四 作用域与块级作用域 五 作用域链 六 闭包 一 什么是函数 类似
  • 微信小程序:图片高度设置无效问题

    控制台查看元素 显示其style中多了一个没有设置的高度值 找了很久发现是因为image标签设置了mode widthFix 此时高度会自适应 样式中设置高度无效
  • 对接百度api的工具类:Base64Util,FileUtil,HttpUtil

    对接百度api的工具类 Base64Util FileUtil HttpUtil package com baidu ai aip utils Base64 工具类 public class Base64Util private stati