CNodeJS 官网 获取主题内容的API 疑问?
发布于 6 年前 作者 Dirmond 2617 次浏览 来自 问答

在移动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 不能够正确的显示图片。 效果预览: EEA37795882071128FBAA8F2A40924D1.jpg 但是如果返回的是这样的数据我就能够正常解析

{
	id:"5433d5e4e737cbe96dcef312",
	author_id:"504c28a2e2b845157708cb61",
	tab:	"share",
	content:'<img src="http://dn-cnode.qbox.me/FnVfpzmijdZekJbHXapMRR9RsoIR" alt="image.png">'
	....
}

即返回的 图片url地址带上 http: 。

请问我该怎么处理呢,CNode官方维护人员能够把整个内容的url 连接换成带有http 的吗?

2 回复

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,也不支持这个形式,看来的自己做兼容处理了

回到顶部