我开发了一个Android应用程序,该应用程序与使用Spring开发的后端进行通信。有时,当我使用Retrofit发送POST请求时,后端会引发以下错误:错误RestExceptionHandler:29-org.springframework.http.converter.HttpMessageNotReadableException:读取输入消息时发生I / O错误;嵌套异常是java.io.CharConversionException:在char#4的字节#19处无效的UTF-32字符0x616d6765(在0x0010ffff以上)。
搜索此消息后,我记录了Retrofit onResponse回调中发送的JSON,并注意到它不完整。就像这样:
{
"key": "value"
"arrayKey": [
{
"objectKey": "objectValue"
}
]
"key2": "value2",
"key3": "
它只是停止JSON的创建。
我不知道是否由于登录时转换为JSON函数而发生这种情况,或者对象创建是否有错误。更奇怪的是,当用户多次发送邮件时,一瞬间一切都发生了。
这是将对象转换为JSON的函数,我用它在Retrofit中记录发送的对象:
public static <T> String ToJson(T obj) {
try{
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
return gson.toJson(obj);
}
catch(Exception ex) {
Log.v("convertion_error", ex.toString());
return null;
}
}
我认为问题不在于日志功能,因为几乎每次日志都可以使用完整的JSON
这是我的对象创建功能:
private CreatedObject objectCreation(Parameter parameter) {
CreatedObject createdObject = new CreatedObject();
createdObject.setInformation1(parameter.getInformation1());
createdObject.setInformation2(parameter.getInformation2());
createdObject.setInformation3(parameter.getInformation3());
createdObject.setDate(DateFormatHelper.getGMTDate());
List<ObjectArray> objects = new ArrayList<>();
for (DataObject p : parameter.getData()) {
ObjectArray ob = new ObjectArray();
ob.setInformation5(p.getInformation5());
ob.setInformation6(p.getInformation6());
ob.setInformation7(p.getInformation7());
objects.add(ob);
}
createdObject.setArrayInformations(objects);
return createdObject;
}
有人已经通过改造获得了不完整的JSON错误?