在Play for Scala中转发HTTP请求

时间:2016-07-11 08:43:00

标签: scala playframework playframework-2.0

这是我在Scala的Play 2.5.x中尝试实现的场景(所有请求和响应都是Json):

  1. 浏览器将HTTP请求发送到URL1。
  2. URL1通过一些数据丰富了它收到的Json,并将整个请求转发给了URL2。
  3. URL2响应浏览器。
  4. 在最后一点,我不确定URL2是否可以将其发送回浏览器或者必须通过URL1进行(我相信它是后者)。

    这是URL1中的请求(URL2是一个简单的请求/响应):

      val request: WSRequest = ws.url("/url2")
      val request2: WSRequest = request.withHeaders("Accept" -> "application/json")
      val data = Json.obj(
            "aaa" -> some_data1,
            "bbb" -> some_data2
       )
       val futureResponse: Future[JsValue] = request2.post(data).map {
                response => response.json
       }
    

    当我发送未来时,我得到了这个例外:

    Execution exception[[NullPointerException: scheme]]
    

    如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

线索在函数名称中 - 它是ws.url,而不是ws.uri。您需要指定完整路径。如果需要,您可以使用ws.url("http://localhost:9000/url2")和自定义元素,例如基于您的配置的方案和端口。