1、接口对接需求如下

1.1 socket协议
1.2 报文中数据均是左对齐右补空格
1.3 报文编码采用:GBK
1.4 接口文档:

2、代码

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.util.List;import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;public JSONObject testRequest(String userCode) throws IOException {logger.info("请求信息:{}",userCode);Socket socket = new Socket(ip, port);OutputStream os = socket.getOutputStream();byte[] param = byteMergerAll(fillParam("210", 3),//交易码fillParam(userCode, 10));//用户代码os.write(param);InputStream is = socket.getInputStream();byte[] result = new byte[1024];is.read(result);logger.info("响应信息:{},{}",new String(result, "GBK"));JSONObject resultJSON = new JSONObject();resultJSON.set("businessCode", new String(getByteByIndex(result, 0, 3)));//交易码resultJSON.set("code", new String(getByteByIndex(result, 4, 6)).trim());//响应码return resultJSON;}

3、涉及到的工具类

 /*** 合并多个byte数组** @param values* @return*/private byte[] byteMergerAll(byte[]... values) {int length_byte = 0;for (int i = 0; i < values.length; i++) {length_byte += values[i].length;}byte[] all_byte = new byte[length_byte];int countLength = 0;for (int i = 0; i < values.length; i++) {byte[] b = values[i];System.arraycopy(b, 0, all_byte, countLength, b.length);countLength += b.length;}return all_byte;}/*** 格式化参数** @param str* @param count* @return*/private byte[] fillParam(String str, int count) throws UnsupportedEncodingException {if (str.getBytes("GBK").length >= count) {return str.getBytes("GBK");}byte[] data = str.getBytes("GBK");byte[] empty = new byte[count - data.length];for (int i = 0; i < empty.length; i++) {empty[i] = 32;}return byteMergerAll(empty, data);}/*** 截取数组** @param original* @param begin* @param end* @return*/private byte[] getByteByIndex(byte[] original, int begin, int end) {byte[] result = new byte[end - begin + 1];int j = 0;for (int i = begin; i <= end; i++) {result[j] = original[i];j++;}return result;}

4、socket服务端本地测试工具


点击此处,下载socket工具

springboot中使用socket对接第三方接口相关推荐

  1. java给第三方接口发送数据_对接第三方接口--使用post请求发送json数据

    对接第三方接口–使用post请求发送json数据 实习4个多月,终于转正!终于可以安心好好上班,好好学习!第一篇播客记录下工作中的中的小知识点. 本文记录的内容如下: 1.使用HttpClient相关 ...

  2. SpringBoot中如何灵活的实现接口数据的加解密功能?

    数据是企业的第四张名片,企业级开发中少不了数据的加密传输,所以本文介绍下SpringBoot中接口数据加密.解密的方式. 本文目录 一.加密方案介绍二.实现原理三.实战四.测试五.踩到的坑 一.加密方 ...

  3. 对接第三方接口(短信,支付)

    前言 第三方短信接口,支付接口广泛应用于金融领域与电商领域,这是我在14年工作时的一些经验总结,现在分享出来,希望能对一部分朋友有所帮助! 内容 一:对接短信接口 对接短信接口大体分为两个步骤: 1. ...

  4. java对接第三方接口

    1.准备与第三方接口对接的账号 配置到了Apollo上面 @Value("${taofake.appId}")private String appId;@Value("$ ...

  5. PHP研发对接第三方接口常用的一些方法函数

    今天对了一下阿里云视频点播插件,用到了几个公共的方法函数,希望可以给同学们共同学习分享一下,对接其他的接口也可以用的到. 1.object转换array /***object转换array*@para ...

  6. java 对接第三方接口

    感想 这是我第一次要写对外的接口,一开始还是比较迷茫的,因为要考虑到数据的安全传输,很多技术我都还是比较的不熟悉,后来经过对每一个技术的了解,终于还是写出来了. 感觉一切都是从陌生到熟悉,再到亲切 哈 ...

  7. 解决对接第三方接口乱码问题

    现代软件,程序员一般有两大任务: (1)自身业务,操作数据库 (2)外部业务,对接接口 然,对接接口经常出现乱码问题. 以下是我用RestTemplate解决对接接口的乱码问题解决方案: public ...

  8. vue+element对接第三方接口实现校园发帖网站“淘柳职”

    一.前言 项目演示地址:可私聊作者获取(演示地址不定时变化) 接上一篇博客<vue+elementui+java 前后端分离实现学校帖子网站,仿照"淘柳职"学校大作业> ...

  9. SpringBoot中如何灵活的实现接口数据的加解密...

    对接口的加密解密操作主要有下面两种方式: 自定义消息转换器 优势:仅需实现接口,配置简单. 劣势:仅能对同一类型的MediaType进行加解密操作,不灵活. 使用spring提供的接口RequestB ...

最新文章

  1. imdb导mysql_keras如何导入本地下载的imdb数据集?
  2. 避免入坑:如何知道一个导师的人品?
  3. jquery的2.0.3版本源码系列(2):21行-94行定义了一些变量和函数 jQuery=function(){}
  4. python实现50行代码_50行Python代码,教你获取公众号全部文章
  5. 大班科学计算机的发明应用教案,大班科学教案:机器人探密
  6. 多表利用DIH批量导入数据并建立索引注意事项
  7. centos上自动执行脚本执行php文件
  8. 我的随身电脑-千脑(转载)
  9. vue中自己实现的页面切换标签手动关闭功能
  10. 建议114:MD5不再安全
  11. oracle12c 环境需求,Oracle12C之环境准备工作
  12. 英语:日常用语中的错误表达和正确表达
  13. 3译码器与半加器的学习
  14. 文本代码编辑器UltraEdit v26.00.0.74 中文版下载与破解方法【亲测有效】
  15. 服务器提示位置不可用 拒绝访问,主编修复win10系统打开Local settings文件夹提示“位置不可用,拒绝访问的问题...
  16. 【Unity3D游戏开发】NGUI制作字体的三种方法 (二一)
  17. 数据结构考研大纲浅析
  18. ArcGIS教程:创建条形图
  19. 购物网站被劫持跳转返利推广网站的分析过程和解决方法
  20. 技术科普丨逆光也清晰-HDR

热门文章

  1. vue文件夹目录详解教程
  2. 将linux安装到U盘中,并在华为matepad x pro中启动
  3. 覆盖libc.so.6的惨痛教训
  4. 新的一年,新的开始,新的征途,新的心态
  5. 阿里云Linux服务器漏洞修复 ( 继续汇总中 )
  6. KNN(k近邻详解)
  7. matlab方差分析如何去除协变量,严博您好,想请教一个关于去除协变量的问题
  8. Ubuntu 20.04 安装配置 GitLab
  9. 中国基因检测行业评估分析与投资发展策略建议报告2022-2028年版
  10. 职称计算机辅导:更改电脑IE收藏夹路径