Glide无法加载资源。

4

使用 glide 从服务器加载图像时,我遇到了问题。

这是我的代码

Glide.with(ImagePreviewActivity.this).load(path).into(img);

以下是logcat的信息:

W/Glide: Load failed for 
http://localhost/AndroidFileUpload/file/IMG_20171128_153602.JPEG with size 
[720x1120]
                                                    class 
com.bumptech.glide.load.engine.GlideException: Failed to load resource
                                                      Cause (1 of 1): class 
com.bumptech.glide.load.engine.GlideException: Fetching data failed, class 
java.io.InputStream, REMOTE
                                                        Cause (1 of 1): 
class com.bumptech.glide.load.engine.GlideException: Fetch failed
                                                          Cause (1 of 1): 
class java.net.ConnectException: failed to connect to localhost/127.0.0.1 
(port 80) after 2500ms: isConnected failed: ECONNREFUSED (Connection refused)

如何解决这个问题?任何建议都将不胜感激,谢谢。

什么是“路径”,URL 是本地主机的,无法访问。 - Goku
似乎你的图像URL是本地主机的,无法从设备访问。 - Samir Bhatt
那么如何使其可访问? - Dwi Teguh Prasetyo
2个回答

3
请检查日志中的这一行:
class java.net.ConnectException: failed to connect to localhost/127.0.0.1
这意味着您的图像路径位于本地主机上。如果您在模拟器上运行应用程序,则应用程序的本地主机是模拟器。要访问桌面,请使用特殊IP地址10.0.2.2。如果您在设备上运行应用程序,则本地主机将是该设备,可以通过本地网络IP连接到桌面。
这可能会导致问题。因此,glide未能加载图像。

那么如何使其从设备上可访问? - Dwi Teguh Prasetyo
使用 IP 制作正确的 URL。 - Samir Bhatt
如果您是从模拟器访问,请检查此链接 https://dev59.com/g2w15IYBdhLWcg3wMpAY#9515414。 - Samir Bhatt
非常感谢您。我通过使用IP而不是本地主机解决了我的问题。 - Dwi Teguh Prasetyo
很好。你可以接受/点赞我的答案,这样也会帮助其他人。 - Samir Bhatt

1
 - Glide.with(context)
                       .load(Zonelist.get(position)
                               .getZone_picture_url_3x()).apply(options).listener(new
   RequestListener<Drawable>() {
                   @Override
                   public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                       new Handler().post(new Runnable() {
                           @Override
                           public void run() {
                               Glide.with(context)
                                       .load(Zonelist.get(position)
                                               .getZone_picture_url_3x())
                                       .into(imageView);
                           }

                       });
                       return false;
                   }

                   @Override
                   public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean
   isFirstResource) {
                       return false;
                   }
               }).into(imageView);
           }

这并不是正确的方式,但在出现问题时非常有帮助 :) - Anand Savjani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接