Java 播放Http Post的Scala代理框架
我在玩!框架,并尝试为http请求、GET和POST创建代理 GET操作似乎在工作,问题在于POST操作,我无法传递请求的有效负载 我尝试了一些方法,比如下面的代码,但似乎没有一种有效Java 播放Http Post的Scala代理框架,java,scala,playframework,proxy,playframework-2.0,Java,Scala,Playframework,Proxy,Playframework 2.0,我在玩!框架,并尝试为http请求、GET和POST创建代理 GET操作似乎在工作,问题在于POST操作,我无法传递请求的有效负载 我尝试了一些方法,比如下面的代码,但似乎没有一种有效 def postAction(query: String) = Action.async { implicit request => val data = if (request.body.asText != None) request.body.asText.get else "" W
def postAction(query: String) = Action.async { implicit request =>
val data = if (request.body.asText != None) request.body.asText.get else ""
WS.url(DEMO_URL + query).post(data).map(resp => Ok(resp.body).as("application/json"))
}
最后要提到的是,我对这两种游戏都是新手!和scala。我必须添加
parse.json
Action.async(parse.json)
现在的代码更简单,如下所示:
def postAction(query: String) = Action.async(parse.json) { implicit request =>
WS.url(DEMO_URL + query).post(request.body).map(resp =>
Ok(resp.body).as("application/json")
)
}
query
是否正确传递?您没有向WS
请求添加任何标题。你不应该至少包括内容类型
?现在,由于您正在将postAction
的主体解析为String
,因此默认情况下,内容类型将为text/plain
。感谢大家的评论,上面的代码将数据作为字符串发送到服务器,但我需要它作为Json发送。什么是val data
?这应该是JSON吗。“似乎没有起作用”——比“不起作用”更具体一些是有帮助的。第二行可以这样写:val data=request.body.asText.getOrElse(“”)