2015-04-13 4 views
0

Je suis très nouveau avec Play Framework et je faisais un tutoriel, mais j'ai un petit problème.Java Play Framework Json BadRequest

J'essaye d'envoyer une demande de JSON POST, et voyez si je peux obtenir la demande correctement ou pas.

J'utilise "Advanced Rest Client" dans Chrome pour tester et envoyer le message POST msg. Je ne sais pas pourquoi, je reçois un message d'erreur Bad Request à chaque fois que j'envoie un msg.

Mon code:

@BodyParser.Of(BodyParser.Json.class) 
public static Result createRutines(){ 
    JsonNode json=request().body().asJson(); 
    if(json==null){ 
     return badRequest("The JSON is Empy"); 
    }else{ 
     return ok("Arrived"); 
    } 
} 

J'apprécieront votre aide.

Je ne pouvais pas joindre l'image d'Advance Rest Client parce que je n'ai pas assez de réputation ici.

+0

pourriez-vous s'il vous plaît ajouter le corps de la réponse? Quelle est la taille du JSON que vous envoyez? Avez-vous essayé avec curl? Qu'y a-t-il dans votre fichier 'routes'? –

+0

Assurez-vous que lors de l'envoi des données JSON, définissez le type de contenu correct. c'est-à-dire application/json. – xtrakBandit

+0

Il serait utile si vous avez posté votre corps JSON qui est envoyé – xtrakBandit

Répondre

0

Soit vous ne publiez pas un fichier JSON invalide, soit vous ne définissez pas le bon type de contenu.

Pour vérifier que votre JSON est valide, vous pouvez utiliser http://jsonlint.com/

Dans le second cas, vous pouvez simplement ajouter l'en-tête Content-Type: application/json à votre demande, ou vous pouvez utiliser TolerantJson à la place:

@BodyParser.Of(BodyParser.TolerantJson.class) 
public static Result createRutines(){ 
    // (...) 
} 
+0

Wow, le Json est valide :) et le type de contenu est défini. Mais je change ce que vous avez dit, Json à TolerantJson et fonctionne parfaitement. Mais je veux apprendre pourquoi travaille de cette façon et pas l'autre? Je suis le gars qui veut apprendre de quelle façon est mieux non seulement de voir que quelque chose fonctionne XD. Merci beaucoup pour votre aide – Aleyango

+0

@aleyango Je pense que la seule différence entre les parseurs Json et TolerantJson est que TolerantJson ne vérifie pas l'en-tête contentType. Donc, vous ne passez probablement pas cet en-tête correctement. – Salem