今天接短信接口,短信接口提供了sdk,我们可以直接用sdk发送请求然后发送对应短信。

但是想使用我们平台自定义的httpUtil实现。

然而忙了1天半,才解决这个问题,还是我同事帮忙找出问题并解决的。

 步骤:

  1、请求信息转json

  2、json走AES加密得到byte[]

  3、将byte[]放入post请求发送,并接受响应。

sdk直接成功,它是自己基于HttpURLConnection封装的一套HttpUtil,直接接受了byte[]作为请求参数,使用post发送响应成功

我们的HttpUtil是基于HttpClient封装而来,post方法只能接受String或Map参数,于是将加密后的byte[] 进行new String()操作后传入,跟进信息,底层将该String采用getByte("UTF-8")进行转换给Request然后请求。一直返回解密失败。

反复调试,将contentType指定为text/plain,编码统一都是UTF-8。但依旧一直该错误。对比两种方式加密后byte[],没有区别。最后发现使用new String(byte[])之后getByte()得到的byte[]容量变大,颠覆我的认知了,byte[]数组经过指定编码new String()然后经过指定编码getByte[]得到的居然不一致。后面定位原因是我系统默认的编码和指定的编码都是UTF-8,但是AES加密产生的byte[]的编码是ISO-8859-1,导致得到的byte[]不是原来的byte[],所以解密失败。

也就是说我前面解码byte[]得到字符串的时候使用了错误编码,导致后面getByte指定错误编码得到的字符串解密后不是原来的样子。

byte[]->new String(byte[]) -> getByte()引发的不一致问题的更多相关文章

  1. C# byte[]与char[]、string与char[]、byte[] 与 string 互转

    1. byte array -> char array Byte[] b=new byte[5]{0x01,0x02,0x03,0x04,0x05};  Char[] c=Encoding.AS ...

  2. python unicode和string byte

    python unicode 和string那 开发过程中总是会碰到string, unicode, ASCII, 中文字符等编码的问题, 每次碰到都要现搜, 很是浪费时间, 于是这次狠下心, 一定要 ...

  3. 用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题

    Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使 ...

  4. C# Byte[] 转String 无损转换

    C# Byte[] 转String 无损转换 转载请注明出处 http://www.cnblogs.com/Huerye/ /// <summary> /// string 转成byte[ ...

  5. BufferHelp byte[] Stream string FileStream Image Bitmap

    /******* * *** ***** ** ** * * * * * * * * ***** * * * * * * * * * * * * * * * ******* *** * ***** * ...

  6. [转]关于网络通信,byte[]和String的转换问题

    最近的项目中要使用到把byte[]类型转换成String字符串然后通过网络发送,但发现发现出去的字符串和获取的字符串虽然是一样的,但当用String的getBytes()的方法得到的byte[]跟原来 ...

  7. java中String byte HexString的转换

    原文:http://blog.sina.com.cn/s/blog_62e9ec530101ebv6.html HexString——>byte public static byte[] hex ...

  8. 如何在Byte[]和String之间进行转换

    源自C#与.NET程序员面试宝典. 如何在Byte[]和String之间进行转换? 比特(b):比特只有0 1,1代表有脉冲,0代表无脉冲.它是计算机物理内存保存的最基本单元. 字节(B):8个比特, ...

  9. golang byte转string 字节数组转字符串的问题

    golang语言本身就是c的工具集,开发c的程序用到的大部分结构体,内存管理,携程等,golang基本都有,他只是在这个基础上又加了一些概念这里说一个很小的问题,就是字节数组转string的问题,网上 ...

随机推荐

  1. 分享WCF文件传输---WCFFileTransfer

    前几天分享了分享了WCF聊天程序--WCFChat , 本文和大家一起分享利用WCF实现文件的传输.程序运行效果:接收文件端:发送文件端:连接WCF服务,选择要传输的文件文件传输成功:我们会在保存文件 ...

  2. 解决IIS7虚拟目录出现HTTP 错误 500.19(由于权限不足而无法读取配置文件)的问题

    今天在windows 7笔记本上搭建一个ASP.NET网络平台,启动IIS 7 时候出现错误: 错误摘要HTTP 错误 500.19 - Internal Server Error无法访问请求的页面, ...

  3. android--------自定义控件 之 基本实现篇

    前面简单的讲述了Android中自定义控件中的几个方法,今天通过代码来实现一个简单的案例 自定义一个扇形图 自定义控件示例: 这里先介绍继承View的方式为例 public class Circula ...

  4. stark组件base.html

    stark 组件基础页面base.html 文件 base.html 1. base.html 页面是 : stark组件增,删,改,查页面的公共部分,如头部导航栏,左侧的用户权限列表栏等. 2. b ...

  5. react中的核心概念

    DOM:浏览器中提供的概念: 虚拟DOM:框架中的概念:需要开发框架的程序员手动用JS对象来模拟DOM元素和嵌套关系: 本质:用JS对象,模拟DOM树: 目的:实现页面的按需更新: 要求:点击列头,实 ...

  6. 2.4 UML类图

    类图定义 类class的定义 具有相同属性.操作.方法.关系或者行为的一组对象的描述符 类是真实世界事物的抽象 问题领域的类:在对系统建模时,将会涉及到如何识别业务系统中的事物,这些事物构 成了整个业 ...

  7. python基础之循环语句,格式化输出以及编码

    1.while循环语句 1.1 常见的几种结构    1. while+判断条件 循环体 2. while+判断条件 循环体 else 语句 tips:while循环如果满足条件的话,会一直循环循环体 ...

  8. leetcode-algorithms-29 Divide Two Integers

    leetcode-algorithms-29 Divide Two Integers Given two integers dividend and divisor, divide two integ ...

  9. leetcode-algorithms-15 3Sum

    leetcode-algorithms-15 3Sum Given an array nums of n integers, are there elements a, b, c in nums su ...

  10. Oracle11g温习-第十七章:权限管理

    2013年4月27日 星期六 10:50 1.权限(privilege):     [system privilege(系统权限):针对于database 的相关权限         object p ...