Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用okhttp将验证代码放入imageView?_Android_Bitmap_Imageview_Inputstream_Okhttp3 - Fatal编程技术网

Android 如何使用okhttp将验证代码放入imageView?

Android 如何使用okhttp将验证代码放入imageView?,android,bitmap,imageview,inputstream,okhttp3,Android,Bitmap,Imageview,Inputstream,Okhttp3,我使用okhttp3构建一个带有cookie和会话的请求,response.body()是验证代码。inputStream不为空,但位图为空。我尝试了下面的方法,但是位图也是空的 Request request = new Request.Builder() .url(url) .addHeader("Cookie", "JSESSIONID="+sessionId) Response response = client

我使用okhttp3构建一个带有cookie和会话的请求,response.body()是验证代码。inputStream不为空,但位图为空。我尝试了下面的方法,但是位图也是空的

Request request = new Request.Builder()
                   .url(url)
                   .addHeader("Cookie", "JSESSIONID="+sessionId)
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
    InputStream inputStream = response.body().byteStream();
    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
    imageView.setImageBitmap(bitmap);
}
我建议使用直接在ImageView中下载图像

毕加索图书馆主页上的示例:

private Bitmap convertBitmap(final Response response) throws IOException {
    InputStream inputStream = response.body().byteStream();
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    byte[] bmp_buffer;
    int len = 0;
    while ((len = inputStream.read(buffer)) != -1) {
        outStream.write(buffer, 0, len);
    }
    outStream.close();
    inputStream.close();
    bmp_buffer = outStream.toByteArray();
    return BitmapFactory.decodeByteArray(bmp_buffer, 0, bmp_buffer.length);
}
此外,您还可以在下载图像时放置占位符:

String imgUrl = "http://i.imgur.com/DvpvklR.png";
Picasso.with(context).load(imgUrl).into(imageView);
放置错误图像,如果下载失败:

Picasso.with(context).load(imgUrl).placeholder(R.drawable.placeholder).into(imageView);
包含cookie的完整代码:

Picasso.with(context).load(imgUrl).error(R.drawable.error_image).into(imageView);

您确定响应中的byteArray是图像吗?是的。我已经使用Glide尝试了url,它可以在ImageView中显示。如果我想使用cookie,我应该如何设置它?当然可能。您好,我试着给毕加索添加曲奇,但我还是无法得到图像,为什么?client=new-OkHttpClient.Builder().addInterceptor(new-Interceptor(){public Response intercept(Chain-Chain)抛出IOException{Request-Request=Chain.Request().newBuilder().addHeader(“Cookie”,“JSESSIONID=abc3St68rRb0V7U5UqLLv;Cookie_-test=1”).build();return-Chain.proced(Request);}.build();毕加索-毕加索=新的Picasso.Builder(MainActivity.this).downloader(新的OkHttp3Downloader(客户端)).build();加载(url).into(imageView);你有stacktrace吗?
IOException
通常是关于连接问题的。你能检查一下吗?
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor {  

    @Override  
    public Response intercept(Chain chain) throws IOException {  
        Request.Builder request = chain.request().newBuilder();  
        request.addHeader("Cookie", "JSESSIONID="+sessionId);  
        return chain.proceed(request.build());  
    }  
});  

CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
client.setCookieHandler(cookieManager);

// Create the downloader for Picasso to use
OkHttpDownloader downloader = new OkHttpDownloader(client);
Picasso picasso = new Picasso.Builder(context).downloader(downloader).build();

picasso.load(imgUrl).placeholder(R.drawable.placeholder).error(R.drawable.error_image).into(imageView);