Bonjour,

Je teste la fonctionnalité WebServices de Play 2.1 car je dois faire dialoguer deux applications.
La première doit envoyer des données, de préférence sous forme de données Json, à la seconde.

Voici des extraits de code de la première :
conf/routes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
GET      /wstests            controllers.WSTests.send()
WSTests.java :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package controllers;
 
import play.*;
import play.mvc.*;
import models.*;
import org.codehaus.jackson.JsonNode;
import play.libs.Json;
 
public class WSTests extends Controller {
 
    public static Result send() {
        Individu ind = Individu.find.byId(610L);
        JsonNode node = Json.toJson(ind);
        return ok(node);
    }
 
}
Quand je me rends sur la page correspondante, pas de problème, elle me renvoie bien une représentation Json de mon objet.

Voici le code de ma seconde application, celle qui doit requêter la première :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package controllers;
 
import play.*;
import play.mvc.*;
import play.libs.WS;
import play.libs.Json;
import org.codehaus.jackson.JsonNode;
import views.html.*;
 
public class Application extends Controller {
 
    public static Result index() {
        JsonNode result = WS.url("localhost:9001/wstests").get().get().asJson();
        return ok(result);
    }
 
}
J'ai aussi essayé en gérant le caractère asynchrone de l'échange, comme le suggère la documantation de Play! :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package controllers;
 
import play.*;
import play.mvc.*;
import play.libs.WS;
import play.libs.Json;
import org.codehaus.jackson.JsonNode;
import views.html.*;
 
public class Application extends Controller {
 
    public static Result index() {
        return async(
                WS.url("localhost:9001/wstests").get().map(
                        new Function<WS.Response, Result>() {
                                public Result apply(WS.Response response) {
                                        return ok(response.asJson());
                                }
                        }
                )
        );
 
    }
}
Dans les deux cas, rien à faire, quand je sollicite l'url correspondant à cette méthode dans mon navigateur ou avec Curl, l'application semble attendre indéfiniment la réponse.

Qu'ai-je loupé d'essentiel ?

Merci d'avance pour votre aide.

PY