2012-03-27 95 views
1

從XPage內部調用跨域REST服務的最佳方式是什麼,我查看了Social Enabler應用程序,但在這種情況下,我還需要在另一臺服務器上向該服務發佈一串內容,然後獲取JSON響應並對其進行解析。在XPage中發佈跨域REST服務

回答

2

有幾種選擇:

  1. 創建生成JSON一個XPage。這就是所謂的xagent(more info
  2. 創建的應用範圍至極一個bean包含的代碼直接使用Java的URL連接從TE服務檢索數據並分析在載體或者任何其它Java對象的JSON,你可以工作
  3. 除了直接在事件代碼中構造URL連接的實例之外,請執行與2相同的操作。

對於這兩個選項2和選項3,你可以使用這樣的代碼

URL url = new URL(http://yourresthot/restapi); 
HttpCOnnection conn = url.openConnection(); 


if (conn.getResponseCode() != 200) { 
    throw new IOException(conn.getResponseMessage()); 
  } 

  // Buffer the result into a string 
  BufferedReader rd = new BufferedReader(
      new InputStreamReader(conn.getInputStream())); 
  StringBuilder sb = new StringBuilder(); 
  String line; 
  while ((line = rd.readLine()) != null) { 
    sb.append(line); 
  } 
  rd.close(); 

  conn.disconnect(); 
  return sb.toString(); 
5

跨域REST服務是不可能從客戶端JavaScript。

有一種解決方法,如果遠程服務支持這種方法,則使用JSONP。它基本上由一個腳本標記組成,該腳本標記引用遠程站點上瀏覽器允許的另一個javascript資源。

除此之外,如果您使用服務器端REST代理,則可以從XPage調用遠程服務。此方法正在用於iNotes,以便與Sametime或Quickr集成。

http://www-10.lotus.com/ldd/lqwiki.nsf/dx/iNotes_proxy_configuration_qd85

本頁面說明如何配置爲您服務的嵌入式代理。

0

您可以使用java URLConnection使用ssjs獲取json數據,並使用「eval」或「toJSON」您可以將其重複放入並顯示帶有計算字段的結果。

4

選項1:JSONP 例子:http://openntf.org/XSnippets.nsf/snippet.xsp?id=xsnippets-widget 代碼:http://xsnippets.openntf.org

選項2:多米諾/ iNotes的代理 http://www.openntf.org/Projects/pmt.nsf/DA2F4D351A9F15B28625792D002D1F18/%24file/SocialEnabler111006.pdf第05.01節

選項3:您自己的通用代理插件 http://www.openntf.org/Projects/pmt.nsf/DA2F4D351A9F15B28625792D002D1F18/%24file/SocialEnabler111006.pdf部分05.02

選項4:如上所述。實施服務器端代碼以訪問其他服務器。

+1

謝謝 - 最後我創建了一個託管bean(我從來沒有這樣做,但看到了如何使用http://per.lausten.dk/blog/2012/02/creating-your-first-managed-bean -for-xpages.html)在那裏我做了POST連接,然後在XPage中,我使用這個bean通過調用它來獲取數據。然後我在SSJS按鈕中處理JSON數據。這現在運作良好。 – Anil 2012-03-28 17:32:22