首页 > 解决方案 > Android Volley:ImageRequest 中的错误 URL

问题描述

我使用的是 Android Studio 4.1.3(最新版本)。我正在使用 Android Volley 库,我正在尝试通过 ImageRequest 从 API 中检索图像。我使用的 URL 如下:

private String skinUrl = "http://crafatar.com/renders/body/680f95cff25d4f178fea90e2c003bebf.png?size=512&overlay&scale=7"

在方法中使用此 url

private void requestImage() {
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        ImageRequest imageRequest = new ImageRequest(skinUrl, response -> skin.setImageBitmap(response),
                0,
                0,
                ImageView.ScaleType.CENTER_CROP,
                null,
                error -> {
        });
        requestQueue.add(imageRequest);
    }

我收到此错误消息

NetworkDispatcher.processRequest: Unhandled exception java.lang.RuntimeException: Bad URL 
    java.lang.RuntimeException: Bad URL 
        at com.android.volley.toolbox.NetworkUtility.shouldRetryException(NetworkUtility.java:164)
        at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:145)
        at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:132)
        at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:111)
        at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:90)
     Caused by: java.net.MalformedURLException: no protocol: 
        at java.net.URL.<init>(URL.java:601)
        at java.net.URL.<init>(URL.java:498)
        at java.net.URL.<init>(URL.java:447)
        at com.android.volley.toolbox.HurlStack.executeRequest(HurlStack.java:82)
        at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:104)
        at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:132) 
        at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:111) 
        at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:90) 

我也尝试过使用 URLEncoder 方法

skinUrl = URLEncoder.encode(skinUrl);

但结果是一样的。问题仅出现在 ImageRequest 中,因为我还从另一个 API 检索 json 数据。

标签: android

解决方案


简单的兄弟使用 glide 图像加载库

因为它是 android 的顶级产品,而且图像加载速度快、效率高,您只需输入图像 URL 并加载图像,但您必须在清单中应用 Internet 权限。

访问文档 - https://github.com/bumptech/glide


推荐阅读