You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中使用Retrofit从REST API获取图片URL遇阻求助

解决Retrofit获取相对图片URL的拼接问题

嘿,我来帮你搞定这个图片路径拼接的事儿~

首先看你的情况:API返回的ImageUrl是相对路径(比如/Uploads/images/product\\549\\549.jpg),而且里面还有转义的反斜杠,我们需要把它和你的BASE_URL拼接成完整的可访问URL,同时处理路径里的斜杠问题。

方案一:在POJO类的get方法里统一处理

最直接的方式是修改Food类的getImageUrl()方法,在返回的时候自动完成拼接和路径清理:

public class Food {
    // 你的其他字段和SerializedName...
    @SerializedName("ImageUrl")
    @Expose
    private String imageUrl;

    // 其他getter/setter...

    public String getImageUrl() {
        // 1. 把反斜杠替换成URL标准的正斜杠
        String cleanedPath = imageUrl.replace("\\", "/");
        // 2. 定义你的BASE_URL(也可以从API接口类里引用,避免硬编码)
        String baseUrl = "http://dangbui.com";
        
        // 3. 处理BASE_URL和路径的斜杠,避免出现双斜杠或者缺少斜杠的情况
        if (baseUrl.endsWith("/") && cleanedPath.startsWith("/")) {
            return baseUrl + cleanedPath.substring(1);
        } else if (!baseUrl.endsWith("/") && !cleanedPath.startsWith("/")) {
            return baseUrl + "/" + cleanedPath;
        } else {
            return baseUrl + cleanedPath;
        }
    }
}

这样每次调用food.getImageUrl()的时候,得到的就是可以直接用来加载图片的完整URL了。

方案二:用图片加载库直接拼接(快速临时方案)

如果你只是临时处理,也可以在加载图片的时候直接拼接,比如用Glide或者Picasso:

// 假设你用Glide加载图片
String baseUrl = "http://dangbui.com";
String fullImageUrl = baseUrl + food.getImageUrl().replace("\\", "/");

Glide.with(this)
     .load(fullImageUrl)
     .into(yourImageView);

顺便提个小坑

看你的POJO类里,Unit Name对应的SerializedName写的是UnitName,这会导致tenDonViTinh字段拿不到值哦,应该改成@SerializedName("Unit Name")才对~

内容的提问来源于stack exchange,提问作者Đăng Bùi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:13:33