目前,我正在尝试使用java sbt sdk api创建和更新博客帖子。
我可以阅读博客和博客文章,并能够使用SDK的.getBlogPost(bkogHandle,postId)方法检索单个博文。
但是,如果我尝试更新或创建博客帖子,我会遇到NullPointerException或没有任何反应。
出于测试目的,我创建了一个演示博客,并尝试更新其中的博客文章:
String blogHandle = "citb";
String postId = "7973d29e-26b6-4d23-ab04-ebfb734bf512";
BlogPost post = sbcs.getBlogService().getBlogPost(blogHandle, postId);
if (null != post){
System.out.println("Found post "+post.getTitle()+" ("+post.getAlternateUrl()+")");
Map<String, Object> fieldMap = post.getFieldsMap();
System.out.println("Found "+fieldMap.keySet().size()+" Entries in the field Map");
try{
//Save the post
System.out.println("Update blog post");
post.setContent("<p dir='ltr'>blabla "+new Date()+"</p>");
System.out.println(post.getContent());
post.setTitle(post.getTitle()+" +");
sbcs.getBlogService().updateBlogPost(post, blogHandle);
}catch(Exception e){
e.printStackTrace();
}
}
此示例在不抛出异常的情况下运行但不更新博客。 我想念一下吗?
如果我使用post.save(blogHandle);
,我会收到以下错误消息:
com.ibm.sbt.services.client.connections.blogs.BlogServiceException: error creating blog post
at com.ibm.sbt.services.client.connections.blogs.BlogService.createBlogPost(BlogService.java:627)
at com.ibm.sbt.services.client.connections.blogs.BlogPost.save(BlogPost.java:128)
Caused by: java.lang.NullPointerException
at com.ibm.sbt.services.client.connections.blogs.feedhandler.BlogsFeedHandler.createEntity(BlogsFeedHandler.java:42)
at com.ibm.sbt.services.client.connections.blogs.BlogService.createBlogPost(BlogService.java:624)
... 2 more
如果我使用createBlogPost(post, blogHandle)
创建新帖子,我会收到相同的错误。
任何想法是什么问题或任何建议我可以做些什么来保存博客帖子?
编辑:
在BlogService类中,问题似乎出现在以下方法中
public BlogPost createBlogPost(BlogPost post, String blogHandle) throws BlogServiceException {
if (null == post){
throw new BlogServiceException(null,"null post");
}
Response result = null;
try {
BaseBlogTransformer transformer = new BaseBlogTransformer(post);
Object payload = transformer.transform(post.getFieldsMap());
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/atom+xml");
String createPostUrl = resolveUrl(blogHandle, FilterType.CREATE_BLOG_POST, null);
**result = createData(createPostUrl, null, headers, payload);**
**post = (BlogPost) new BlogPostsFeedHandler(this).createEntity(result);**
} catch (Exception e) {
throw new BlogServiceException(e, "error creating blog post");
}
return post;
}
答案 0 :(得分:0)
我无法重现这个问题但是我在几天前修复了updateBlogPost上的一个错误,我不认为它在上面提到的版本中可用。因此,我们必须检查下一次构建何时到期,我们可以确认问题是否仍然存在。
对于BlogPost中的save() - 我会在其中进行更改,以便返回更新的BlogPost
答案 1 :(得分:0)
您可以从特定于服务的异常类中获取失败的确切原因,在本例中为BlogServiceException。 BlogServiceException封装了与Connections通信时可能导致的所有异常,包括Authentication和Authorization。
调试和查看所有网络调用的另一种方法是将所有流量重定向到调试实用程序(如fiddler),可以从此链接获取有关使用fiddler设置SBT的详细信息SBT Wiki