2010-08-15 5 views
2

J'ai un fichier, sample.xml, situé sur un serveur Web. Je veux accéder à ce fichier à partir d'une application GWT fonctionnant sur un autre serveur. Je ne veux pas faire des appels RPC au même serveur desservant l'application GWT et accéder au fichier requis sur le côté serveur (comme un proxy). Je veux accéder au fichier directement du côté client car mon application va être hébergée sous forme de fichiers statiques dans un serveur web.Accès à un fichier sur un autre serveur à partir de GWT Côté client

Y a-t-il un moyen de faire cela?

+1

avez-vous un certain contrôle sur ce serveur? Si vous le faites, JSONP fonctionnera. Sinon ... je ne vois pas de manière élégante - la SOP est là pour une raison;) –

Répondre

1

Bien sûr - vous devez émettre un XHR (XmlHTTPRequest) à partir du navigateur, puis analyser les données.
Dans GWT, vous pouvez le faire en utilisant la classe RequestBuilder (voir here).

S'il vous plaît noter que certaines restrictions côté client peuvent s'appliquer (par exemple Origine unique politique, etc.)

Vous émettez la demande (GET ou POST - GET dans votre cas) et passer une instance de rappel.
La méthode onResponseReceived de l'instance reçoit un objet Response qui, en appelant sa méthode getText renvoie le contenu reçu.

+0

le 'RequestBuilder' a aidé. Mais mon exigence est d'accéder à un fichier d'un autre serveur que celui à partir duquel le code de l'application est servi. Je reçois com.google.gwt.http.client.RequestPermissionException en indiquant la même restriction de stratégie d'origine. –

+0

Si vous avez accès au serveur de fichiers, vous pouvez alléger les restrictions SOP en envoyant l'en-tête HTTP 'Access-Control-Allow-Origin' - mais il doit être utilisé avec précaution car il comporte un certain risque. – adamk

0

Vous essayez d'avoir votre site (a.com/index.html) de référence b.com/sample.xml. Je vois quelques options.

Si vous avez accès aux serveurs de b.com:

  • Modifier sample.xml en sample.js pour contenir les mêmes informations en JSON avec un rappel, et la référence avec une étiquette script
  • Compiler votre site web en utilisant la Chargeur inter-site (voir Controlling Compiler Output), mettez votre index.html à b.com/index.html, mettez tout le reste de vos fichiers sur a.com. Ensuite, tous vos appels RPC peuvent aller à b.com, mais cela signifie que l'utilisateur doit accéder à b.com au lieu de a.com

Si vous ne disposez pas d'accès aux serveurs de b.com: - Il suffit de fournir un lien pour les gens à télécharger sample.xml - hôte a.com sur un serveur avec une sorte de support de script (PHP, Python, Ruby, Java, quoi que ce soit) et mettre une procuration à b.com/sample.xml