Connections Java API文档和示例假设用户使用Web服务器与Connections进行交互。就我而言,我想使用jRuby的Java API,而且没有Web服务器。
我想将文件上传到Connections社区,或者更具体地说,直接连接到Connections服务器,进行身份验证并进行上传。我尝试了下面的代码并碰到了错误:
"未针对请求"
初始化SBT上下文这个错误消息似乎在抱怨我当然没有的servlet。
这是我试过的代码......
ep = new BasicEndpoint();
ep.setUrl(connections_url);
ep.login(userid, pw);
service = new CommunityService();
service.setEndpoint(ep);
istream = new FileInputStream(temp_file);
uploaded_file = service.uploadFile(istream, community_id, filename, filesize)
上面使用的API调用只是我的一个猜测,然而登录到Endpoint似乎工作,因为方法返回true,这给了我一些希望,我在正确的轨道上。但上传因上下文错误而失败,所以现在我被卡住了。
任何使这项工作成功的想法?
答案 0 :(得分:0)
IBM SBT也可以处理独立应用程序。 Github存储库中有an example。
基本上,您应该初始化应用程序和上下文。
RuntimeFactory runtimeFactory=new RuntimeFactoryStandalone();
Context context=null;
Application application=null;
try {
application=runtimeFactory.initApplication(null);
context = Context.init(application, null, null);
// Whatever you want to do...
} catch(Throwable t) {
// Error handling
t.printStackTrace();
} finally {
if (context != null)
Context.destroy(context);
if (application != null)
Application.destroy(application);
}
答案 1 :(得分:0)
我最初在此写了一篇博客......
基本上你创建了一个Endpoint,我从BasicEndpoint开始。
/**
* creates a new Basic Endpoint to connect to Connections
* @param url
* @param user
* @param password
* @return
*/
private BasicEndpoint createEndpoint(String url, String user, String password) {
BasicEndpoint endpoint = new ConnectionsBasicEndpoint();
endpoint.setUrl(url);
endpoint.setUser(user);
endpoint.setPassword(password);
endpoint.setForceTrustSSLCertificate(true);
return endpoint;
}
现在,我有了通过传入Endpoint I构造来调用后端ForumService的基础。
ForumService svc = new ForumService(demo.endpoint);
try {
ForumList forumList = svc.getAllForums();
for(BaseForumEntity forumEntity : forumList){
Forum forum = (Forum) forumEntity;
System.out.println(“+F: ” + forum.getTitle());
TopicList topics = forum.getTopics();
for(BaseForumEntity topicEntity : topics){
ForumTopic topic = (ForumTopic) topicEntity;
System.out.println(“– ” + topic.getTitle());
}
}
} catch (ForumServiceException e) {
e.printStackTrace();
}
您可以重复此方法进行几乎任何通话。