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
相关产品推荐
相关产品推荐

