2 u014666034 u014666034 于 2016.02.15 23:14 提问

安卓功能5.1下正常 4.0下异常

应用所有对php服务器的http请求,在5.1下正常,在4.4、4.0下不正常。
测试过3台手机和模拟器确认是系统版本问题,与机型无关。

比如在服务器返回福建省份的成绩名单时,5.1机型接收到的内容是:(PC上返回的也是这个结果)

{"num":"9","city":{"1":"厦门","2":"泉州","3":"福州","4":"南平","5":"宁德","6":"漳州","7":"三明","8":"龙岩","9":"莆田"}}

而4.4、4.1接收到的内容则是:

 {"num":"0","city":{}}

后来我让服务端输出数据库查询记录集的行数$numcount。一样的服务端代码,5.1收到的是正确的行数,和数据库里一致,4.4收到的则是0。百思不得其解啊!!

客户端的代码都是类似的,都是在进程中执行然后handler接收消息,照这个现象看不是handler的问题。或许可能是客户端代码问题?请各位帮忙看一看。

 Thread thread = new Thread(){
            @Override
            public void run(){
                try{
                    String link = "http://example.com/search_item.php");
                    link = link + "&item=" + item;
                    URL url = new URL(link);
                    HttpURLConnection conn= (HttpURLConnection)url.openConnection(); conn.connect();
                    InputStream in = conn.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                    String info = null;
                    info = reader.readLine();
                    Message msg = Message.obtain();
                    msg.obj = info;
                    handler.sendMessage(msg);
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };
        thread.start();

4个回答

wangzhiyu1980
wangzhiyu1980   2016.02.16 08:54
已采纳

可以试试从三个方向考虑
1)Server,在发送代码执行的最后一步打印一下发送的内容,确认确实是在所有的情况下都把数据发送出去了。
而且没有对UE版本进行检查。

2)传输过程中,如果有模拟器的话可以试试在本机抓一下wireshark log,看看传输过程中是不是有什么问题。

3)Client端,如果针对不同版本,接收不到内容,可以试试在不好用的Client端去请求一下不同server的别的内容,看看是不是好用。
如果同样的代码,针对别的内容好用,那问题大概还是出在Server端。

brian512
brian512   2016.02.16 08:43

HttpURLConnection在底层实现不一样,5.0后是用的okhttp,顺着这个思路再看看

Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.16 09:02

byte[] b = new byte[count];
int readCount = 0; // 已经成功读取的字节的个数
while (readCount < count) {
readCount += in.read(bytes, readCount, count - readCount);
}


这样读取试试

qq_17250009
qq_17250009   2016.02.17 20:48

不懂你说的版本问题。但是info = reader.readLine(); 这才读取一行 要循环读取完成

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android蓝牙4.0读写数据返回状态码及出现异常解决办法
蓝牙4.0读写数据返回状态码: 1、0 2、129 3、133 正常状态码: state == 0:当蓝牙4.0连接并读写数据成功时,得到state为0的状态码。 异常状态码: state == 129: 表现状态:蓝牙4.0连接并读写数据不成功 原因:未知 state == 133: 表现状态:蓝牙4.0连接并读写数据不成功 原因:当蓝牙设备出现频繁连接断
ExtJS3.2+SpringMVC4.0 Form提交后返回json始终是failure,而且有兼容性问题
经过一段折腾,总算把问题解决了,下面将解决的过程记录下来,希望能给其他人提供些帮助: 返回JSON格式的数据,需要在ApplicationContext.xml中配置,当然网上有两种方法,我用了第一种,即阿里巴巴的fastjson,之前下载的是低版本的,运行时发现有错,因为缺少对spring的支持,最终下载了1.1.40版本(当然版本越高肯定也支持),将下载的fastjson-1.1.40.ja
4.0 以后 android 不再支持第三方app读写apn了
(4.0之前,即小于等于2.3可以用 content://telephony/carriers 来读写apn) 1. 即使只是读,google也不允许了。    因为安全原因,读取apn也需要 write 权限,否则会抛出 exception:    : No permission to write APN settings: Neither user 10068 nor curre
xUtils 在Android4.0下的开发环境建立
xUtils 在Android4.0下的开发环境建立 首先得有Eclipse+ADT 作者使用版本是:Eclipse Version: Luna Release (4.4.0)+JDK7 然后是下载xUtils的源码: 下载地址: https://github.com/wyouflf/xUtils 下载最新的xUtils包,作者下载的版本是xUtils-2.6.14 先将
教你如何实现安卓4.0以上的手机支持高大上的OTG功能
OTG是手机非 常非常实用的功能,能接移动硬盘、U盘(这个功能相当于你的手机可以无限扩展内存卡了,什么8G16G32G128G内存卡都是浮云)、鼠标、键盘、手 柄、打印机等USB外设。手机用OTG线接上U盘可以直接读取U盘里的电影图片文字资料的所有文件,是不是爽翻了?
十大异常测试用例(转载)
      此文乃转载,原名为《十大负面测试用例》,我觉得负面测试不如异常测试来的好理解,自己改了改。恩,先说一说我自己的心得。前八个用例都是原来已经在我的思维体系中的,也是测试中常常覆盖的部分。第九个会话测试,有这个概念,但是没有很系统的做,以后要在工作中尽量的融合进来。第十个,性能改变测试,原文表述的有点罗嗦,我自己理解之后对此的总结是对增、删、改、查等操作,从用户输入、点击触发了请求之后
Android 4.0源码下载以及编译
Android 4.0源码下载以及编译
和菜鸟一起学android4.0.3源码之按键驱动短长按功能
第一:按键ADB调试 1>    adb shell getevent中获取到的屏幕事件的坐标转换    通过使用adb shell getevent,可以得到如下设备操作后的指令,具体表示的含义,可以参考网上很多的文章,这里就不再叙述 这里的0035和0036分别表示屏幕上的X坐标和Y坐标,后面的值表示具体的坐标点,通过16进制转换可以得到值1142和1527,而我
Android4.0 Socket异常,需要另外开辟线程进行Socket编程
Socket socket = new Socket(); socket.connect(new InetSocketAddress(ConstData.TCP_IP,                     ConstData.TCP_PORT), 2000); 通不过去,直接异常处理,这是因为android 3.0+以上 已经不建议在activity中添加耗时操作,要界面和数据脱离。4.
app在安卓5.0运行正常,但是在6.0运行报错
错误如下: java.lang.LinkageError: com.example.LoginActivity at dalvik.system.DexFile.defineClassNative(Native Method) at dalvik.system.DexFile.defineClass(DexFile.java:226) ...... 解法: 只需要将 XxxA