在XPage中使用REST服务

时间:2014-01-17 16:46:06

标签: web-services rest xpages xpages-extlib

有人能指出我在XPage中开始使用REST服务的文章,教程或演练吗?我见过一些使用Domino数据服务或Domino REST服务的人,但我希望看到一个消费外部REST服务,如PayPal。

请不要指导我使用社交商务工具包,我已经查看了它,甚至已经下载了它,但我觉得我不应该安装J2EE和Eclipse来查看12行JavaScript的演示。

2 个答案:

答案 0 :(得分:8)

我知道这有点事后,但仅仅是为了在XPage中使用RESTful端点,我最近在博客上写了关于在服务器端这样做的事情。我的实现使用了一个Java类,用于通过URLConnection生成输出,最后是一个StringBuffer来读取内容,然后将其解析为JsonObject以便返回。我对这个话题进行了两次跟进,你可以相应地找到它们:

Series page / TOC

  1. REST consumption, server-side with Java
  2. REST consumption with authentication
  3. 生成Custom JSON data from Java
  4. 我的示例使用了Google GSON库,但是as pointed out by Paul T. Calhoun,有一段com.ibm.commons.util.io.json软件包已经与Domino一起提供了一段时间,可能是Domino开发人员更好的选择(没有外部依赖关系和没有潜在的java.policy编辑)。

    该方法的基本结构是:

    /* 
     * @param String of the url
     * @return JsonObject containing the data from the REST response.
     * @throws IOException
     * @throws MalformedURLException
     * @throws ParseException 
     */
    public static JsonObject GetMyRestData( String myUrlStr ) throws IOException, MalformedURLException {
        JsonObject myRestData = new JsonObject();
        try{
    
            URL myUrl = new URL(myUrlStr);
            URLConnection urlCon = myUrl.openConnection();
            urlCon.setConnectTimeout(5000);
            InputStream is = urlCon.getInputStream();
            InputStreamReader isR = new InputStreamReader(is);
            BufferedReader reader = new BufferedReader(isR);
            StringBuffer buffer = new StringBuffer();
            String line = "";
            while( (line = reader.readLine()) != null ){
                buffer.append(line);
            }
            reader.close();
            JsonParser parser = new JsonParser();
            myRestData = (JsonObject) parser.parse(buffer.toString());
    
            return myRestData;
    
        }catch( MalformedURLException e ){
            e.printStackTrace();
            myRestData.addProperty("error", e.toString());
            return myRestData;
        }catch( IOException e ){
            e.printStackTrace();
            myRestData.addProperty("error", e.toString());
            return myRestData;
        }
    }
    

答案 1 :(得分:3)

那里有很多文章等。我主要坚持使用OpenNTF提供的Xpages ExtLib演示数据库。如果你没有它:只需d / l extlib安装,demo db就是包的一部分。 谈论SBT:根据您的Domino Designer版本,您可能已经使用了工具包(例如版本9)。还有另一个可用于SBT示例的演示数据库。总而言之,我想知道你在安装J2EE / Eclipse时的意思