0

我们的工具使用 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 文档描述:

http://www-10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+4.5+API+Documentation#action=openDocument&res_title=Creating_blog_posts_ic45&content=pdcontent

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,所以那里似乎没有问题......

4

1 回答 1

2

我早就放弃了尝试遵循 IBM 记录的 REST API 说明(尤其是因为它总是以无数 REST 请求结束,只是为了访问我需要将请求发送到的 URL)。

我对我们所有的 Connections 4.5 系统都尝试了您的 URL(/blogs/api/blogs?commUuid=... 和 /blogs/<homepage>/api/blogs...),但是尽管我确实得到了一个 xml 文档在任何地方都不包含对构想博客的引用(是的,我确保要针对确实包含构想博客的社区进行搜索)。

这是一个肮脏的解决方法,您提到您不想这样做,但我确实使用了它,因为记录的方式不起作用:

要发布博客条目,您需要针对

/blogs/<bloghandle>/api/entries

要查找社区中构思博客的句柄 (<snx:handle>),您可以执行以下操作:

1.) Get the widgets-feed for the community: /communities/service/atom/community/widgets?communityUuid=...
2.) Navigate to the entry of the Ideation Blog widget: <snx:widgetDefId>IdeationBlog</snx:widgetDefId>. 

除非您的客户系统中有人弄乱了 widgets-config.xml,否则 widgetDefId 将是 IdeationBlog。

3.) Take the <snx:widgetInstanceId> text of the Ideation Blog entry. 

那是您构思博客的句柄。(是的,社区构想博客是使用构想博客小部件的 widgetInstanceId 作为句柄创建的。普通博客是使用其标题的一些混搭作为句柄创建的)。您现在可以构建将条目发布到的 URL。

于 2013-10-29T12:49:01.740 回答