将博客条目发布到社区

时间:2013-10-28 16:48:25

标签: ibm-connections ibm-sbt

我们的工具是使用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文档,因此无法执行以下步骤。我试图查询客户服务器上的不同网址,例如/ blogs / {homepageHandle} / api / blogs?commUuid =&amp; 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 - &gt;收藏 - &gt; HREF

更新

这可能是SBT的问题。我的假设是,返回一个空的xml文档是错误的,而是通过SBT Endpoint类调用返回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,所以看似没问题......

1 个答案:

答案 0 :(得分:2)

我很久以前放弃了尝试遵循IBM记录的REST API指令(尤其是因为它总是以无数的REST请求结束,只是为了获取我需要发送请求的URL)。

我针对所有的Connections 4.5系统尝试了两个网址(/ blogs / api / blogs?commUuid = ...和/ blogs /&lt; homepage&gt; / api / blogs ...),但我确实得到了回到它的xml文档它不包含对ideationblog的引用(是的,我确保对包含构思博客的社区进行查询)。

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

要发布博客条目,您需要POST

/blogs/<bloghandle>/api/entries

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

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. 

这是您的构思博客的句柄。 (是的,社区构思博客是使用Ideation Blog小部件的widgetInstanceId作为句柄创建的。正常博客是使用其标题的一些mashup创建的句柄)。您现在可以构造URL以将条目发布到。