2012-03-27 4 views
1

Was ist der beste Weg, um einen Cross-Domain-REST-Service innerhalb einer XPage zu nennen, ich habe durch die Social Enabler App gesucht, aber in diesem Fall muß ich auch Senden Sie eine Zeichenfolge mit Inhalt an diesen Dienst auf einem anderen Server, und rufen Sie dann die Antwort ab, bei der es sich um JSON handelt, und parsen Sie sie.POSTen zu Cross-Domain-REST-Service aus einem XPage

Antwort

2

Es gibt mehrere Möglichkeiten:

  1. eine XPage erstellen, die json erzeugt. Dies nennt man xagent (more info)
  2. Erstellen Sie eine Bohne in Anwendungsbereich Wich enthält Code zum Abrufen von Daten aus te Service direkt die Java-URL-Verbindung und analysiert die json in einem Vektor oder einem anderen Java-Objekt können Sie mit der Arbeit
  3. Tun Sie dasselbe wie 2, außer dass Sie die Instanz der URL-Verbindung direkt im Ereigniscode konstruieren.

Für beide Option 2 und Option 3 könnten Sie Code wie diese

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

domänenübergreifende REST-Service ist von der Client-Seite Javascript nicht möglich.

Es gibt eine Abhilfe für das, mit JSONP wenn der Remote-Dienst dies unterstützt. Es besteht im Wesentlichen aus einem Skript-Tag, das auf eine andere JavaScript-Ressource auf der entfernten Site verweist, die von Browsern erlaubt wird.

Other than that, wenn Sie ein Server-Seite REST-Proxy verwenden, können Sie den Remote-Service von Ihrem XPages nennen. Diese Methode wird beispielsweise für iNotes zur Integration in Sametime oder Quickr verwendet.

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

Diese Seite zeigt, wie die eingebettete Proxy für Ihren Dienst zu konfigurieren.

0

Sie können java URLConnection verwenden, um die json-Daten mit ssjs abzurufen, und mit "eval" oder "toJSON" können Sie sie in eine Wiederholung einfügen und das Ergebnis mit einem berechneten Feld anzeigen.

4

Option 1 verwenden: JSONP Beispiel: http://openntf.org/XSnippets.nsf/snippet.xsp?id=xsnippets-widget Code: http://xsnippets.openntf.org

Option 2: Domino/iNotes-Proxy http://www.openntf.org/Projects/pmt.nsf/DA2F4D351A9F15B28625792D002D1F18/%24file/SocialEnabler111006.pdf Abschnitt 05.01

Option 3: Ihr eigenes Generikum Proxy als Plugin http://www.openntf.org/Projects/pmt.nsf/DA2F4D351A9F15B28625792D002D1F18/%24file/SocialEnabler111006.pdf Abschnitt 05.02

Option 4: Wie oben beschrieben. Implementieren Sie den serverseitigen Code für den Zugriff auf andere Server.

+1

Dank - am Ende habe ich eine Managed Bean (was ich nie getan hatte, sah aber, wie man mit http://per.lausten.dk/blog/2012/02/creating-your-first-managed-bean -for-xpages.html), wo ich die POST-Verbindung hergestellt habe, und dann habe ich in der XPage die Bean verwendet, um Daten durch Aufruf zu erhalten. Ich habe dann die JSON-Daten in der SSJS-Schaltfläche verarbeitet. Das funktioniert jetzt gut. – Anil

Verwandte Themen