com.bumptech.glide.load.HttpException: 禁止

com.bumptech.glide.load.HttpException: Forbidden

我想用glide加载一张url图片

GlideApp.with(this).load("https://files.yande.re/image/0f1c68aa6d34fb3a7a7af855e0036377/yande.re%20404988%20arsenixc%20landscape.jpg").error(R.mipmap.ic_launcher).into(photoView);

但它捕获错误:

class com.bumptech.glide.load.engine.GlideException: Failed to load resource
08-14 00:59:32.323 15273-15273/com.yaminet.yami I/Glide: Root cause (1 of 1)
                                                     com.bumptech.glide.load.HttpException: Forbidden
                                                         at  com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:118)
                                                         at  com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:53)
                                                         at  com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:95)
                                                         at  com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:144)
                                                         at  com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:138)
                                                         at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:59)
                                                         at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:95)
                                                         at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:61)
                                                         at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:282)
                                                         at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:252)
                                                         at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:222)
                                                         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                         at java.lang.Thread.run(Thread.java:761)
                                                         at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory.run(GlideExecutor.java:347)

如何用glide加载网上的大图?

我今天也出现这个错误,因为我用了很多次延德的api,所以,我想这可能有两个可能的原因,一个是一次滑行有很多请求,所以延德serve 拒绝响应,第二个是如果你用spider 显示yande 的图片,你需要让你的spider 像一个Internet Expore,使用一些方法,比如在http 请求中添加headers。

在我的代码中,我添加了headers,就解决了。

    pictureItem = (PictureItem) getIntent().getExtras().get("PictureItem");
    image = (ImageView) findViewById(R.id.image);

    GlideUrl glideUrl = new GlideUrl(pictureItem.sample_url, new LazyHeaders.Builder()
            .addHeader("User-Agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit / 537.36(KHTML, like Gecko) Chrome  47.0.2526.106 Safari / 537.36")
            .build());

    Glide.with(this)
         .load(glideUrl)
         .into(image);

一些可能对你有帮助的参考:

Glide - adding header to request

Yande API

无论如何,如果我们像蜘蛛一样编写一些代码,我们应该更多地考虑我们从中获取信息的网站。 (笑脸)