Glide 无法加载 url 此类图像

Glide unable to load url images of this type

我以前用过 Glide 很多很多次,但目前我在使用这种 url https://www.publicdomainpictures.net/pictures/10000/nahled/thinking-monkey-11282237747K8xB.jpg 显示图像时遇到问题,我不知道为什么我无法加载它。我什至简化了我的项目以仅在 MainActivity 上显示此图像。查看glide的Listener时提示这个错误

2021-02-19 21:39:43.438 31240-31240/com.y4kuzabanzai.testforvass E/MainActivity: onLoadFailed: com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There was 1 root cause:
    com.bumptech.glide.load.HttpException(Failed to connect or obtain data, status code: 503)
     call GlideException#logRootCauses(String) for more detail   

问题是我已经尝试使用其他网址,它们工作得很好。有什么问题?这是我的简单代码

MainActivity.class

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var imageView: ImageView = findViewById(R.id.homeImage)


        Glide.with(this)

            .load("https://www.publicdomainpictures.net/pictures/10000/nahled/thinking-monkey-11282237747K8xB.jpg")
            .listener(object : RequestListener<Drawable> {
            override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean
            ): Boolean {
                Log.e(TAG, "onLoadFailed: ${e}")
                return false
            }

            override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean
            ): Boolean {
                return true
            }
        })
            .into(imageView)

    }

activity_main.layout

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

 1. <ImageView
               android:id="@+id/homeImage"
               android:layout_width="418dp"
               android:layout_height="492dp"
               android:layout_marginStart="14dp"
               android:layout_marginBottom="109dp"
               app:layout_constraintBottom_toBottomOf="parent"
               app:layout_constraintStart_toStartOf="parent"
               tools:srcCompat="@tools:sample/avatars" /> </androidx.constraintlayout.widget.ConstraintLayout>

可能有些地方没有正确配置。检查这些。

  • 首先,你不需要tools:srcCompat="@tools:sample/avatars"

  • 第二个在 AndroidManifest.xml 文件的标签内。

    android:usesCleartextTraffic="true"
  • glid中图片的大小规则你应该知道,因为glide中加载大图有问题

  • 你可以试试这个也把android:largeHeap="true"放到清单文件的标签里。

让我知道结果:)

更新

如果还不行,试试这个。


Glide.with(getContext())
    .asBitMap() //[for new glide versions]
    .load(url)
    //.asBitmap()[for older glide versions]
    //.placeholder(R.drawable.default_placeholder)
    .override(1600, 1600) // Can be 2000, 2000
    .into(new BitmapImageViewTarget(imageViewPreview) {
        @Override
        public void onResourceReady(Bitmap  drawable, GlideAnimation anim) {
            super.onResourceReady(drawable, anim);   
        }
    });

或者这个


Glide.with('context')
                    .asBitmap()
                    .load('url')
                    .apply(new RequestOptions().override(1600, 1600)) //This is important 
                    .into(new BitmapImageViewTarget('imageview') {
                        @Override
                        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                            super.onResourceReady(resource, transition);
                             imageview.setImageBitmap(resource);        
                        }
                    });

我终于修好了!!!!问题是在必须添加 User-Agent 的情况下,您必须使用 header。在这里我是如何修复它的,请注意,因为我尝试了几件事,所以我的代码可能发生了一些变化,感谢 Faramarz Afzali 的时间。这是我的代码:

private val USER_AGENT = "Mozilla/5.0 (Linux; Android 11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.181 Mobile Safari/537.36"

val glideUrl = GlideUrl(
            gnome.thumbnail,
            LazyHeaders.Builder().addHeader("User-Agent", USER_AGENT).build())

        val requestOptions = RequestOptions()
            .placeholder(R.drawable.ic_launcher_background)
            .error(R.drawable.ic_launcher_background)


        GlideApp.with(itemView.context)
            .applyDefaultRequestOptions(requestOptions)
            .load(glideUrl)
            .timeout(60000)
            .override(320, 480)
            .into(binding.gnomeImage)

正在清单中添加网络安全配置xml文件:

EN: Adding network security configuration xml file to the list: res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">developer.alexanderklimov.ru/</domain>
    </domain-config>
</network-security-config>

AndroidManifest.xml中添加网络安全配置:

EN: Add network security configuration in AndroidManifest.xml:

<application
    android:name=".MyApplication"
    android:networkSecurityConfig="@xml/network_security_config" ... />

[From]https://www.5axxw.com/questions/content/uhfo5y