在Android的Web服务器,从获取图像中的异常 [英] Exception during fetching the image from webserver in android
问题描述
你好我得到以下异常,而从服务器获取图像。我的作品后取5-7的图像得到如下:
06-12 16:35:50.904:
WARN / AsyncTask的(717):
java.lang.InterruptedException 06-12
16:35:50.904:WARN / AsyncTask的(717):搜索
在
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1254)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.util.concurrent.FutureTask中$ Sync.innerGet(FutureTask.java:219)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.util.concurrent.FutureTask.get(FutureTask.java:82)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
android.os.AsyncTask $ 3.done(AsyncTask.java:196)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.util.concurrent.FutureTask中$ Sync.innerCancel(FutureTask.java:293)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.util.concurrent.FutureTask.cancel(FutureTask.java:75)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
android.os.AsyncTask.cancel(AsyncTask.java:325)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
us.bnn.news.IncidentDetailsActivity $ GetImages.doInBackground(IncidentDetailsActivity.java:1691)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
us.bnn.news.IncidentDetailsActivity $ GetImages.doInBackground(IncidentDetailsActivity.java:1)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
android.os.AsyncTask $ 2.call(AsyncTask.java:185)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:305)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:561)
06-12 16:35:50.904:
WARN / AsyncTask的(717):在
java.lang.Thread.run(Thread.java:1096)
块引用>我是用这个方法:
公共静态位图getLargeImage(字符串imgUrl的)
{
位图位图= NULL;
在的InputStream = NULL;
Log.v(TAG,开始fetchimg主图像);
尝试
{
DefaultHttpClient mHttpClient =新DefaultHttpClient(); HTTPGET mHttpGet =新HTTPGET(imgUrl的); HTT presponse mHtt presponse = mHttpClient.execute(mHttpGet); 如果(mHtt presponse.getStatusLine()的getStatus code()== HttpStatus.SC_OK)
{
HttpEntity实体= mHtt presponse.getEntity();
如果(实体!= NULL)
{
在= entity.getContent(); 二BufferedInputStream为=新的BufferedInputStream(中,8190); ByteArrayBuffer BAF =新ByteArrayBuffer(50);
INT电流= 0;
而((电流= bis.read())!= - 1){
baf.append((字节)电流);
}
字节[]为imageData = baf.toByteArray();
BitmapFactory.de codeByteArray的(为imageData,0,imageData.length);
如果(在!= NULL)
附寄();
}
}
}
赶上(异常前)
{
Log.v(错误获取URL从图像,ex.getMessage());
}
返回位图;
}
解决方案你在不同的线程接收图像?如果是的话,你用哪个类下载图像?标准的HttpClient不是线程安全的,你应该使用ThreadSafeClientConnManager得到线程安全的。
Hi i am getting the following exception while fetching the image from server. I works for fetching 5-7 images after that got the following:
06-12 16:35:50.904: WARN/AsyncTask(717): java.lang.InterruptedException 06-12 16:35:50.904: WARN/AsyncTask(717):
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1254) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:219) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.util.concurrent.FutureTask.get(FutureTask.java:82) 06-12 16:35:50.904: WARN/AsyncTask(717): at android.os.AsyncTask$3.done(AsyncTask.java:196) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.util.concurrent.FutureTask$Sync.innerCancel(FutureTask.java:293) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.util.concurrent.FutureTask.cancel(FutureTask.java:75) 06-12 16:35:50.904: WARN/AsyncTask(717): at android.os.AsyncTask.cancel(AsyncTask.java:325) 06-12 16:35:50.904: WARN/AsyncTask(717): at us.bnn.news.IncidentDetailsActivity$GetImages.doInBackground(IncidentDetailsActivity.java:1691) 06-12 16:35:50.904: WARN/AsyncTask(717): at us.bnn.news.IncidentDetailsActivity$GetImages.doInBackground(IncidentDetailsActivity.java:1) 06-12 16:35:50.904: WARN/AsyncTask(717): at android.os.AsyncTask$2.call(AsyncTask.java:185) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 06-12 16:35:50.904: WARN/AsyncTask(717): at java.lang.Thread.run(Thread.java:1096)I an using this method:
public static Bitmap getLargeImage(String imgUrl) { Bitmap bitmap = null; InputStream in = null; Log.v(TAG,"start fetchimg main images"); try { DefaultHttpClient mHttpClient = new DefaultHttpClient(); HttpGet mHttpGet = new HttpGet(imgUrl); HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet); if (mHttpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity entity = mHttpResponse.getEntity(); if ( entity != null) { in = entity.getContent(); BufferedInputStream bis = new BufferedInputStream(in, 8190); ByteArrayBuffer baf = new ByteArrayBuffer(50); int current = 0; while ((current = bis.read()) != -1) { baf.append((byte)current); } byte[] imageData = baf.toByteArray(); BitmapFactory.decodeByteArray(imageData, 0, imageData.length); if(in != null) in.close(); } } } catch (Exception ex) { Log.v("Error Fetching images from url",ex.getMessage()); } return bitmap; }
解决方案Do you receive images in different threads? If yes, which class do you use to download the images? Standard HttpClient is not thread-safe, you should use ThreadSafeClientConnManager to get thread-safe one.
这篇关于在Android的Web服务器,从获取图像中的异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!