首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Glide FileNotFoundException

Glide FileNotFoundException
EN

Stack Overflow用户
提问于 2021-10-14 20:23:59
回答 1查看 176关注 0票数 1

سلامعليكم

我想用Glide加载图像,但我得到了这个错误:

代码语言:javascript
复制
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)

这是图像url:https://via.placeholder.com/600/1e5390

这是Glide代码:

代码语言:javascript
复制
@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)

    }
}

并在这里使用它:

代码语言:javascript
复制
<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" />

谢谢:))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-19 20:54:09

这就解决了我的问题:

代码语言:javascript
复制
val theImage = GlideUrl(
        imgUrl, LazyHeaders.Builder()
            .addHeader("User-Agent", "5")
            .build()
    )

将用户代理头添加到Glide

完整代码:

代码语言:javascript
复制
@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)
                }
            })    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69576936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档