???? ?????
我想使用 Glide 加載影像,但出現此錯誤:
java.io.FileNotFoundException: https://via.placeholder.com/600/1e5390
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:102)
at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:56)
at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70)
at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63)
at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310)
at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:276)
at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393)
這是圖片網址:https : //via.placeholder.com/600/1e5390
這是 Glide 代碼:
@BindingAdapter("imageUrl")
fun ImageView.bindImage( imgUrl: String?) {
imgUrl?.let {
val imgUri = imgUrl.toUri().buildUpon().scheme("https").build()
Glide.with(this.context)
.load(imgUri)
.apply(
RequestOptions()
.error(R.drawable.ic_broken_image)
)
.into(this)
}
}
并在這里使用它:
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
app:imageUrl="@{photoObject.photoUrl}"
app:srcCompat="@drawable/ic_broken_image" />
謝謝 :))
uj5u.com熱心網友回復:
這解決了我的問題:
val theImage = GlideUrl(
imgUrl, LazyHeaders.Builder()
.addHeader("User-Agent", "5")
.build()
)
將用戶代理標頭添加到 Glide
完整代碼:
@BindingAdapter("imageUrl")
fun ImageView.bindImage( imgUrl: String?) {
val theImage = GlideUrl(
imgUrl, LazyHeaders.Builder()
.addHeader("User-Agent", "5")
.build()
)
theImage.let {
Glide.with(this.context)
.load(theImage)
.apply(
RequestOptions()
.error(R.drawable.ic_broken_image)
)
.into(object : CustomViewTarget<ImageView, Drawable>(this) {
override fun onLoadFailed(errorDrawable: Drawable?) {}
override fun onResourceCleared(placeholder: Drawable?) {}
override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) {
this@bindImage.setImageDrawable(resource)
}
}) }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326712.html
下一篇:訪問django資料庫物件的元素
