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
无论如何,如果我们像蜘蛛一样编写一些代码,我们应该更多地考虑我们从中获取信息的网站。 (笑脸)
我想用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
无论如何,如果我们像蜘蛛一样编写一些代码,我们应该更多地考虑我们从中获取信息的网站。 (笑脸)