0
非常にうまく動作していたコードに問題があります。 私はアンドロイドでWebサーバーからデータを取得するために、非同期タスクを実行しています、問題はコントロールが非同期タスク内のreadLineに来るとき、私は例外を取得していますということですが、詳細は以下に提供されていますAndroid:java.io.IOException:java.util.zip.DataFormatException:サーバーからデータを取得中に距離が長すぎます
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
これに対する解決策を見つけられましたか?私もそれに直面しています! @ user3520457 – ngoa