1、发现用rest client工具测试接口成功,但是原生的方法模拟请求,却失败了
2、利用抓包工具对两次的请求进行监控,如下:
请求成功的body
{"Data":'{"sex":1,"userName":"............",
请求失败的body部分
.E{"Data":'{"sex":"1",
发现两个body部分不一样,失败的请求body原数据前多了部分内容
3、原来是因为DataOutputStream和OutputStreamWriter,之所以失败是因为用了DataOutputStream为了更好的处理字符还是用OutputStreamWriter,如果是二进制用DataOutputStream
4、在用FastJson的过程中也有些问题
1)、字段名首字母大写,在输出json后,自动变成了小写。需要用注解@JSONField(name = "UserName")在字段上。
2)、如果字段为null,在输出json后,没有了这个字段。在输出json时,需要多加一个参数:JSON.toJSONString(user,SerializerFeature.WriteMapNullValue);又特地查了下,为null时的处理有多种情况:
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
做一记录。