android - BitmapFactory.decodeStream 总是返回 null
问题描述
我只遇到这个问题,这个网址总是BitmapFactory.decodeStream
无法解码bufferedInputStream
我认为问题实际上来自连接请求,但已经两天了,我正在尝试解决问题..
任何简单的帮助都会非常有帮助..
我的代码:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
HttpLoggingInterceptor logging = new HttpLoggingInterceptor(message -> Log.d(getClass().getName(), "OkHttp: " + message));
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder client = new OkHttpClient.Builder();
client.addInterceptor(logging);
Request request = new Request.Builder().url("https://manga.ae/cdn/cdn1/2338/0029/15.jpg")
.addHeader("Referer","https://mngaar.com/")
.addHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36")
.addHeader("Content-Type", "image/jpeg")
.build();
client.build().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("Tag", "error" + e.getMessage());
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
runOnUiThread(new Runnable() {
@Override
public void run() {
ResponseBody in = response.body();
InputStream inputStream = in.byteStream();
Log.i("inputStream", "inputstream value = " + inputStream);
try {
Log.i("responseBody", "ResponseBody value = " + in.string());
} catch (IOException e) {
e.printStackTrace();
}
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
Bitmap bitmap = BitmapFactory.decodeStream(bufferedInputStream);
Log.i("bitmap", "bitmap value = " + bitmap);
imageView.setImageBitmap(bitmap);
}
});
}
});
日志猫:
OkHttp: <-- 200 https://manga.ae/cdn/cdn1/2338/0029/15.jpg (1497ms)
OkHttp: date: Thu, 15 Jul 2021 11:11:10 GMT
OkHttp: content-type: image/jpeg
OkHttp: content-length: 144200
OkHttp: x-frame-options: SAMEORIGIN
OkHttp: last-modified: Fri, 23 Dec 2016 15:02:29 GMT
OkHttp: etag: "23348-54454acb46b40"
OkHttp: x-xss-protection: 1; mode=block
OkHttp: x-frame-options: SAMEORIGIN
OkHttp: x-content-type-options: nosniff
OkHttp: cache-control: max-age=259200
OkHttp: cf-cache-status: HIT
OkHttp: age: 5953
OkHttp: accept-ranges: bytes
D/com.example.newbagdad.MainActivity: OkHttp: expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
OkHttp: report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=2hhpsuHQMTAPG04De4208d2yzHTbJnY5dki9YYGFECczz%2FlOcs9mxR9jX79eq9UOlxUuNAupDpYzPdOX0YCmytNbNI9K1ALuBjt7616iUwvuAhvJE%2B6QLvpG0g%3D%3D"}],"group":"cf-nel","max_age":604800}
OkHttp: nel: {"report_to":"cf-nel","max_age":604800}
OkHttp: vary: Accept-Encoding
OkHttp: server: cloudflare
OkHttp: cf-ray: 66f28c6d391b082c-CDG
OkHttp: alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400, h3=":443"; ma=86400
D/com.example.newbagdad.MainActivity: OkHttp:
OkHttp: <-- END HTTP (binary 144200-byte body omitted)
I/inputStream: inputstream value = 144200
D/skia: --- codec->getAndroidPixels() failed.
I/bitmap: bitmap value = null
解决方案
推荐阅读
- angularjs - 使模块加载 JSON Karma AngularJS
- java - 等到命令结束
- node.js - npm 错误!ELOOP:遇到太多符号链接(cordova-plugin-app-event 损坏的符号链接)
- javascript - 我应该如何在 Electron 中处理面向用户的插件?
- django - Django 1.6.5 用户注册错误没有这样的表:auth_user
- python-3.x - TypeError:在 PyCharm 中调试使用 Cython 的 Python3 代码时,NoneType 不可调用
- visual-studio - System.IO.FileNotFoundException:更新 xamarin 表单后无法加载程序集“AppName”
- c# - 如何从左到右分配标签顺序 - winforms C#
- r - 格式 - 将小数时间数据显示为 hh:mm:ss R
- javascript - 仅在禁用 javascript 时使用链接