博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
签名问题
阅读量:6602 次
发布时间:2019-06-24

本文共 1236 字,大约阅读时间需要 4 分钟。

hot3.png

签名验签不通过检测

1. 检查字段拼接方式是否正确

2. 字符串转二进制数组时是否正确(重点)

通常我们进行二进制转换是指调用String的getByte()无参数方法,该方法在转换时默认获取当前系统的字符格式:

if (defaultCharset == null) {            synchronized (Charset.class) {                String csn = AccessController.doPrivileged(                    new GetPropertyAction("file.encoding"));                Charset cs = lookup(csn);                if (cs != null)                    defaultCharset = cs;                else                    defaultCharset = forName("UTF-8");            }        }

如果获取字符编码异常,默认使用iso-8859-1形式:

try {            // use charset name encode() variant which provides caching.            return encode(csn, ca, off, len);        } catch (UnsupportedEncodingException x) {            warnUnsupportedCharset(csn);        }        try {            return encode("ISO-8859-1", ca, off, len);        } catch (UnsupportedEncodingException x)         .....

因此在进行签名过程中需要将字符串转换成二进制数组时,都要使用getByte(charSetName)的方式指定编码集

3. 请求方式是否正确

使用httppost请求时,无法直接通过指定header的方式设置ContentType,需在entry体中设置ContentType

HttpPost post = new HttpPost(url);		StringEntity entity = new StringEntity(json,"UTF-8");    entity.setContentType("application/json");		post.setEntity(entity);

转载于:https://my.oschina.net/dreamForMe/blog/1796770

你可能感兴趣的文章
Unity 碰撞检测中碰撞器与触发器的区别
查看>>
Elasticsearch配置文件说明
查看>>
路由表的构成
查看>>
初识java
查看>>
temporary Object and destructor
查看>>
xcode - 移动手势
查看>>
细说浏览器特性检测(1)-jQuery1.4添加部分
查看>>
古中国数学家的计算力真是惊人
查看>>
XMl各种格式转换功能代码
查看>>
Java基础-算术运算符(Arithmetic Operators)
查看>>
XML 基础
查看>>
C#编程(四十七)----------集合接口和类型
查看>>
java的Date() 转换符
查看>>
手机浏览器旋转为宽屏模式下文字会自动放大的解决方案
查看>>
【转】关于大型网站技术演进的思考(十二)--网站静态化处理—缓存(4)
查看>>
积跬步,聚小流------Bootstrap学习记录(1)
查看>>
HDUPhysical Examination(贪心)
查看>>
HTML5 FileAPI
查看>>
使用tdcss.js轻松制作自己的style guide
查看>>
SecureCRTPortable.exe 如何上传文件
查看>>