困扰几周了,请教啊,android与websevice数据交互很诡异的问题 android与webservice急求教数据交互 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主你好。你的这个问题我也遇到了。你httpcon.java,public ArrayList<String> inputStreamtovaluelist(InputStream in, String methodName) 的这个方法的第3行:String s1 = "";你把这句换成String s1 = null;应该是就正常了。。————————————————————————————————我调试时发现inputStreamtovaluelist这个方法中String[] s13 = s1.split("><");这一行拆分字符串s1的结果不正确,字符串数组s13所得的结果十分的奇怪。而且最奇怪的地方就是有的时候结果正常,有的时候不正常。我将String s1 = "";换成String s1 = null后,拆分的结果就正确了。。但是我的程序还是有问题,可能是这个httpcon类本身不太对劲。。还是用ksoap访问webservice吧。 这个问题还没有结束呢。我用的httpcon.java和楼主您的一模一样,将上面的问题解决后,在模拟器中测试可以正常从数据库获得数据,刷新ui,但是真机跑起来的时候有以下情况:1.debug一步一步走,可以正常得到数据。2.debug时走到,crraylist = http.getwebservice这一步时runover过去,crraylist所得到的结果不正常。3.run,不能从数据库中得到正确的结果。------------------------------------------------------------------以上问题我都不清楚是怎么回事。不过既然把楼主的问题解决了,so .....给分吧。。 楼主你好,我二楼所写的完全不正确,请你忘了2楼我所写的吧。-------------------------------------------------------------------在你的httpcon.java类中。请注意其成员函数inputStreamtovaluelist中几行程序:for (int n; (n = in.read(b)) != -1;) { s1 = new String(b, 0, n); out.append(s1);}System.out.println(out);String[] s13 = s1.split("><");这段代码的意思显然是:s1是一个临时从inputstream流中得到数据的字符串,最终的结果是通过将s1添加到out.这个StringBuffer之中的。但是s13却是对一个临时s1进行split的结果,字面意思上就不正确,结果自然也不能保证正确。楼主可以这样更改这段代码: String s2 = null; for (int n; (n = in.read(b)) != -1;) { s1 = new String(b, 0, n); out.append(s1); } System.out.println(s1); System.out.println(out); s2 = out.toString(); String[] s13 = s2.split("><");这样结果肯定正确了这次我再说错的话切丁丁-----------------------------------------------------我对http的通信机制也是一直半结,希望能有高人出现 我也很想给你分啊,还是有问题:貌似那里解析字符串出错是因为inputstreamtovaluelist中out输出时,正常时:出错时最后一行不知为啥多了个<string/>,然后就无法正常解析 你上面两段结果是两个函数的响应,你最好贴一下一个函数的两种情况。有没有一个函数有时候对有时候错的情况?-----------------------------------------------------------------------------上面的问题很简单,<string/>是xml空字符串的标记符。你在webservice中看看那个出问题的函数,检查它从数据库中获得数据时,有没有从数据库中得到的某一个数据是null值,如果有null值的话,xml就会返回一个<string/>标记,表示这个数据是个string型的null。楼主你最好在数据库中给每一列加上一个默认值。这样的话就没问题了-----------------------------------------------------------------------------最好还是换成ksoap2访问webservice吧 我也是用这个httpcon,用他的数据库可以,用自己的数据库,OutputStream outStream = con.getOutputStream();这句就出问题,请教指点 建议把读取流时byte【1024】调大 感谢这个帖子感谢xdnm123感谢qiaognn 调试了2个礼拜啊 今天终于解决了,不过我用了楼上的方法,好像没解决问题,随便改了个自己的方法,问题居然解决了,灵感来源于xdnm123,谢谢谢啦for (int n; (n = in.read(b)) != -1;) { s1 = new String(b, 0, n); out.append(s1); } System.out.println(out); //String[] s13 = s1.split("><");浪费哥哥两个礼拜调试这个问题啊 String[] s13 = out.toString().split("><"); 我想问一下楼主,OutputStream outStream = con.getOutputStream();这段代码和String[] s13 = out.toString().split("><");这段有什么关系吗??一个在前一个在后 android如何在绘制楼盘表 如何在Android实现一个流媒体服务器 Android 数据同步问题 android 2.3 如何更改壁纸为单屏模式 最近弄一个棋牌类联网游戏,有问题请教一下?大家帮帮忙 请问一个关于apk程序安装到手机运行后出现的问题 android支持双屏输出吗 去掉Activity标题栏,影响了AlertDialog样式。 菜鸟求大神。。本人才进入android android串口无法通信 Android如何实现通知栏点击事件:我想通过点击通知栏中的一栏显示一个对话框? android 进度条SeekBar显示不全和Framlayout元素遮盖问题
你的这个问题我也遇到了。
你httpcon.java,public ArrayList<String> inputStreamtovaluelist(InputStream in, String methodName) 的这个方法的第3行:String s1 = "";
你把这句换成String s1 = null;
应该是就正常了。。
————————————————————————————————
我调试时发现inputStreamtovaluelist这个方法中String[] s13 = s1.split("><");这一行拆分字符串s1的结果不正确,字符串数组s13所得的结果十分的奇怪。而且最奇怪的地方就是有的时候结果正常,有的时候不正常。
我将String s1 = "";换成String s1 = null后,拆分的结果就正确了。。
但是我的程序还是有问题,可能是这个httpcon类本身不太对劲。。
还是用ksoap访问webservice吧。
我用的httpcon.java和楼主您的一模一样,将上面的问题解决后,在模拟器中测试可以正常从数据库获得数据,刷新ui,但是真机跑起来的时候有以下情况:
1.debug一步一步走,可以正常得到数据。
2.debug时走到,crraylist = http.getwebservice这一步时runover过去,crraylist所得到的结果不正常。
3.run,不能从数据库中得到正确的结果。
------------------------------------------------------------------
以上问题我都不清楚是怎么回事。
不过既然把楼主的问题解决了,so .....给分吧。。
-------------------------------------------------------------------
在你的httpcon.java类中。请注意其成员函数inputStreamtovaluelist中几行程序:
for (int n; (n = in.read(b)) != -1;) {
s1 = new String(b, 0, n);
out.append(s1);
}
System.out.println(out);
String[] s13 = s1.split("><");
这段代码的意思显然是:
s1是一个临时从inputstream流中得到数据的字符串,最终的结果是通过将s1添加到out.这个StringBuffer之中的。
但是s13却是对一个临时s1进行split的结果,字面意思上就不正确,结果自然也不能保证正确。
楼主可以这样更改这段代码:
String s2 = null;
for (int n; (n = in.read(b)) != -1;) {
s1 = new String(b, 0, n);
out.append(s1);
}
System.out.println(s1);
System.out.println(out);
s2 = out.toString();
String[] s13 = s2.split("><");
这样结果肯定正确了这次我再说错的话切丁丁
-----------------------------------------------------
我对http的通信机制也是一直半结,希望能有高人出现
inputstreamtovaluelist中out输出时,正常时:出错时最后一行不知为啥多了个<string/>,然后就无法正常解析
有没有一个函数有时候对有时候错的情况?
-----------------------------------------------------------------------------
上面的问题很简单,<string/>是xml空字符串的标记符。你在webservice中看看那个出问题的函数,检查它从数据库中获得数据时,有没有从数据库中得到的某一个数据是null值,如果有null值的话,xml就会返回一个<string/>标记,表示这个数据是个string型的null。
楼主你最好在数据库中给每一列加上一个默认值。这样的话就没问题了
-----------------------------------------------------------------------------
最好还是换成ksoap2访问webservice吧
for (int n; (n = in.read(b)) != -1;) {
s1 = new String(b, 0, n);
out.append(s1);
}
System.out.println(out);
//String[] s13 = s1.split("><");浪费哥哥两个礼拜调试这个问题啊
String[] s13 = out.toString().split("><");
这段代码和
String[] s13 = out.toString().split("><");
这段有什么关系吗??一个在前一个在后