2014-06-17 4 views
1

Je suis en train de prendre une demande http et l'envoyer à un autre service. Je veux utiliser le json envoyé à partir du premier POST et l'envoyer au service suivant. Le problème que j'ai est de transformer les données POST en json et de le mettre dans un nouveau POST mais ce n'est pas le type de jeu Writeable.JSON en tant qu'écriture Scala Play Cadre

Voici le code:

def postProxyParse(proxyUrl: String) = Action.async { request => 
    var url = buildUrl(request.uri) 
    val data = request.body.asJson 
    if(url ==""){ 
     badRequest(null, "Url Not matching proxy possibilities") 
    } 
    WS.url(url).post(data).map { response => 
     Ok(response.body) 
    } 
} 

L'erreur que je reçois est Cannot write an instance of Option[play.api.libs.json.JsValue] to HTTP response. Try to define a Writeable[Option[play.api.libs.json.JsValue]]

+2

Pouvez-vous nous donner l'erreur exacte que vous obtenez? – wingedsubmariner

+0

@wingedsubmariner Ajouté –

+0

Votre code comme écrit ne produit pas cette erreur. Êtes-vous sûr de n'avoir pas écrit 'Ok (data)' ou 'Ok (response.body.asJson)'? – wingedsubmariner

Répondre

1

Salut donc le point de cela était de créer un service de proxy pour rediriger les requêtes de poste avec une URL spécifique. La réponse à ce problème est:

def postProxyParse(proxyUrl: String) = Action.async { request => 
val url = buildUrl(request.uri) 
var data = Json.parse(request.body.asText.get); 
if(url ==""){ 
    badRequest(null, "Url Not matching proxy possibilities") 
} 
WS.url(url).withHeaders( "Accept" -> "application/json", 
    "Cookie" -> ("sessionId=" + request.cookies.apply("sessionId").value)).post(data).map { response => 
    Ok(data) 
} 
} 

Le code complet pour un service proxy scala est here

Questions connexes