在移动APP 的开发过程中,我调用CNode 这个 /api/v1/topic/5433d5e4e737cbe96dcef312 api 的时候, 有些图片不能显示不出来,经过调查发现图片的url地址是没有http 开头,比如传回来tpoic 的content字段的数据:
{
id:"5433d5e4e737cbe96dcef312",
author_id:"504c28a2e2b845157708cb61",
tab: "share",
content:'<img src="//dn-cnode.qbox.me/FnVfpzmijdZekJbHXapMRR9RsoIR" alt="image.png">'
....
}
这样会造成我的APP 不能够正确的显示图片。 效果预览: 但是如果返回的是这样的数据我就能够正常解析
{
id:"5433d5e4e737cbe96dcef312",
author_id:"504c28a2e2b845157708cb61",
tab: "share",
content:'<img src="http://dn-cnode.qbox.me/FnVfpzmijdZekJbHXapMRR9RsoIR" alt="image.png">'
....
}
即返回的 图片url地址带上 http: 。
请问我该怎么处理呢,CNode官方维护人员能够把整个内容的url 连接换成带有http 的吗?
1.这个是历史数据,新上传的图片已经是完整路径了。除了文本的图片路径外,头像路径也存在这个问题:avatarUlr = //gravatar.com/avatar/xxxxx
2.// 开头的叫做可选协议,在浏览器环境下,他会根据 baseUrl 的协议类型自动适配(http, https, file 等)。 例如,你访问 https://cnodejs.org/xxxxx, 浏览器会自动按照 https://dn-cnode.qbox.me/xxx 去解析 所以浏览器下是没有显示问题的。
3.原生移动端肯定不支持这种协议,按道理,API 部分应该补全 URL。 但是 CNode 历史数据应该不好做兼容了。这里客户端去判断吧。
public static String getCompatUrl(String url) {
if (!TextUtils.isEmpty(url) && url.startsWith("//")) {
return "https:" + url;
} else {
return url;
}
}
@TakWolf 我用的是RN的webView,也不支持这个形式,看来的自己做兼容处理了