最近做一个项目,需要对接拼多多的api接口,其本身没有提供sdk,但是发现api设计与淘宝top结构非常类似,之前由于对接过淘宝的top,对淘宝top sdk的结构比较了解,且淘宝sdk整体比较清晰,也比较通用。(简单来说就是封装request/response,根据注释自动转换请求对象为参数,然后调用httpClient类请求api服务,再根据注释将返回响应json信息转换为响应对象),于是对淘宝的sdk 源码进行提取裁剪改造,基本完成了对第三方api的封装。但是碰到一个问题,其他迁移都很完美,完全适配,但是转换成对象的字符串这一步,中文转码始终是乱码,但原json格式返回数据的unicode编码没有问题。难道是淘宝转码的bug,(怎么可能,top接口都开放这么多年,当时这么想,但是其他地方始终找不到原因)。
问题集中在unicode这个方法上
private char unicode() {
int value = 0;
for (int i = 0; i < 4; ++i) {
switch (next()) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
value = (value << 4) + c - '0