【发布时间】:2016-05-24 15:48:41
【问题描述】:
我在一个运行良好的代码上遇到问题。 我正在运行异步任务以从 android 中的 Web 服务器获取数据,问题是当控件进入异步任务中的 readLine 时出现异常,详细信息如下:
BufferedReader reader = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line);
break;
}
堆栈跟踪:
05-24 21:10:41.261 11232-11476/com.fiesta W/System.err: java.io.IOException: java.util.zip.DataFormatException: invalid distance too far back
05-24 21:10:41.263 11232-11476/com.fiesta W/System.err: at com.android.okhttp.okio.InflaterSource.read(InflaterSource.java:84)
05-24 21:10:41.263 11232-11476/com.fiesta W/System.err: at com.android.okhttp.okio.GzipSource.read(GzipSource.java:80)
05-24 21:10:41.264 11232-11476/com.fiesta W/System.err: at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:349)
05-24 21:10:41.265 11232-11476/com.fiesta W/System.err: at java.io.InputStreamReader.read(InputStreamReader.java:233)
05-24 21:10:41.266 11232-11476/com.fiesta W/System.err: at java.io.BufferedReader.fillBuf(BufferedReader.java:145)
05-24 21:10:41.268 11232-11476/com.fiesta W/System.err: at java.io.BufferedReader.readLine(BufferedReader.java:397)
05-24 21:10:41.270 11232-11476/com.fiesta W/System.err: at com.fiesta.SearchPeople$1GetPeople.doInBackground(SearchPeople.java:131)
05-24 21:10:41.271 11232-11476/com.fiesta W/System.err: at com.fiesta.SearchPeople$1GetPeople.doInBackground(SearchPeople.java:96)
05-24 21:10:41.272 11232-11476/com.fiesta W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
05-24 21:10:41.273 11232-11476/com.fiesta W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-24 21:10:41.275 11232-11476/com.fiesta W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
05-24 21:10:41.276 11232-11476/com.fiesta W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
05-24 21:10:41.277 11232-11476/com.fiesta W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
05-24 21:10:41.279 11232-11476/com.fiesta W/System.err: at java.lang.Thread.run(Thread.java:818)
05-24 21:10:41.280 11232-11476/com.fiesta W/System.err: Caused by: java.util.zip.DataFormatException: invalid distance too far back
05-24 21:10:41.282 11232-11476/com.fiesta W/System.err: at java.util.zip.Inflater.inflateImpl(Native Method)
05-24 21:10:41.283 11232-11476/com.fiesta W/System.err: at java.util.zip.Inflater.inflate(Inflater.java:237)
05-24 21:10:41.284 11232-11476/com.fiesta W/System.err: at com.android.okhttp.okio.InflaterSource.read(InflaterSource.java:67)
05-24 21:10:41.285 11232-11476/com.fiesta W/System.err: ... 13 more
我知道php中的数据没有损坏,我可以看到它正在正确返回对象。
<?php
include 'includes/conn.php';
ini_set('display_errors', 1);
$u_id = $_GET['uid'];
$s = $_GET['s'];
$result = array();
$res = mysqli_query($con,"select u_id, first_name, last_name, user_profile_image from main_user_login where concat(first_name, ' ', last_name) like '%$s%'");
while ($row = mysqli_fetch_array($res)) {
array_push($result,
array('u_id'=>$row['u_id'],
'first_name'=>$row['first_name'],
'last_name'=>$row['last_name'],
'user_profile_image'=>$row['user_profile_image']
));
}
echo json_encode(array("result"=>$result));
mysqli_close($con);
?>
这个问题突然出现,我知道这不可能是代码问题,因为没有完成代码更改并且这个问题开始出现。 请提出建议。
【问题讨论】:
-
更新,我尝试在 Nexus 6 上运行它,但没有成功,但在 Nexus 4 上运行良好。
-
您能找到解决方案吗?我也在面对! @user3520457
标签: java android android-asynctask