我们的工具使用 Connections API 将博客条目提交到已配置社区的 idation 博客。
因此,我使用以下工作流程,仅给定社区 ID:
1) query /blogs/api/blogs?commUuid=<ID_HERE>&blogType=ideationblog
2) retrieve the link to the communities ideation blog from the xml result of aboves query. the xPath for this is "/app:service/app:workspace/app:collection[a:category[@term='entries']][1]/@href"
3) post the created blog entry payload to this url.
这一切在我们的环境中运行良好。但是,当我在客户那里部署它时,它不再起作用了。第一步的 url 返回一个空的 xml 文档,因此无法执行以下步骤。我尝试在客户服务器上查询不同的 url,例如 /blogs/{homepageHandle}/api/blogs?commUuid=&blogType=ideationblog 工作正常,但是对上面 api 服务文档的查询是唯一一个包含集合元素的我需要的链接。
我可以做任何其他 API 调用来获取此网址吗?您是否知道任何原因,为什么呼叫在我们的环境中运行良好,但在客户处失败?这可能是访问权限问题吗?
我知道,我可能只创建一个像“blogs//api/entries”这样的网址并发布到它,但是我更喜欢上面的方式,因为我只配置了 communityUuid,而且因为它正是这种方式API 文档描述:
ServiceDoc -> 集合 -> href
更新:
这可能真的是 SBT 的问题。我的假设是返回一个空的 xml 文档是错误的,而是通过 SBT 端点类的调用返回 null。
Endpoint endpoint = EndpointFactory.getEndpoint("connections");
Object result = endpoint.xhrGet("/blogs/api"); // also tried for /blogs/<homepage>/api
当我再次在浏览器中尝试这些 URL 时,我得到了完整的结果。所有这一切的问题是,我既不能在我们自己的环境中重现它,也不能在客户那里调试它。我试图从中捕获可能的异常,但没有抛出任何异常。只是结果为空。
澄清一下:同样的请求在我们自己的(Connections 4.0)环境中工作得很好,也来自客户的浏览器。我当然在浏览器和 API 调用中使用相同的用户进行身份验证。
endpoint.isAuthenticationValid();
也返回true,所以那里似乎没有问题......