大家好!
一个简单例子的Android登陆界面的,后台是一个servlet web进程,提供了doGet和doPost方法,doGet已经将处理了Get方法并将获取到的user类以JSON格式发送出去了,下面是doGet的发送代码:
一个简单例子的Android登陆界面的,后台是一个servlet web进程,提供了doGet和doPost方法,doGet已经将处理了Get方法并将获取到的user类以JSON格式发送出去了,下面是doGet的发送代码:
if(name.equals(user.getName()) && password.equals(user.getPassword())) { ObjectMapper om = new ObjectMapper(); om.writeValue(response.getOutputStream(), user); System.out.println(user.toString()); return; }
但是android侧在连接建立之后,用readValue接口却收不到报文,程序打印到readValue这行代码的上方就停止了,不往下面执行了,也没异常出来:
if(conn.getResponseCode() != 200){ Log.i("main","连接服务器失败"); return ; } Log.i("main",Inputstr2Str_ByteArrayOutputStream(conn.getInputStream(),null));/*能打印出来并正常*/ try{ ObjectMapper om = new ObjectMapper(); User user = om.readValue(conn.getInputStream(),User.class); Log.i("main",user.toString()); /*这一句没走到*/
上面对conn.getInputStream()流的打印都出来了,是正常的JSON格式的报文,没看出异常,大家帮看看问题是在哪里?谢了!
Serlvet的doGet方法中的,user.toString() 打印出来的log:
User [name=zhanghua, sex=男, age=31, password=54321, getName()=zhanghua, getSex()=男, getAge()=31, getPassword()=54321, toString()=com.sxt.day06.entity.User@c389f2]
android侧连接后将conn.getInputStream()流打印出来:
11-27 10:56:01.476: I/main(1647): {“name”:”zhanghua”,”sex”:”男”,”age”:31,”password”:”54321″}
PS: 用的jackson的JAR包是jackson-core-asl-1.9.13.jar / jackson-mapper-asl-1.9.13.jar, SDK是4.4.2, POS报文都获取正常,不知道为啥GET到的JSON包不能读取。
解决方案
40
Log.i("main",Inputstr2Str_ByteArrayOutputStream(conn.getInputStream(),null));
这句注销掉看看,你这句把内容读完了,后面再读就读不到了