小编And*_*rey的帖子

Play Framework 2.1中的AbsoluteURI支持

如上所述:http: //www.w3.org/Protocols/rfc2616/rfc2616-sec5.html

为了允许在未来版本的HTTP中转换为所有请求中的absoluteURI,所有HTTP/1.1服务器必须接受请求中的absoluteURI表单,即使HTTP/1.1客户端只会在对代理的请求中生成它们.

我有客户端将POST请求发送到我的play-2.1.1服务器.他这样发送:

POST http://172.16.1.227:9000/A8%3aF9%3a4B%3a20%3a89%3a40/1089820966/ HTTP/1.1
Content-Length: 473
Content-Type: application/json
Date: Thu, 25 Apr 2013 15:44:43 GMT
Host: 172.16.1.227:9000
User-Agent: my-client

...some data...
Run Code Online (Sandbox Code Playgroud)

所有请求都会被"未找到操作"错误拒绝.我使用curl发送的相同请求很好,它们之间的唯一区别是curl使用相对URI发送它:

POST /A8%3aF9%3a4B%3a20%3a89%3a40/1089820966/ HTTP/1.1
Accept: */*
Content-Length: 593
Content-Type: application/json
Host: 172.16.1.227:9000
User-Agent: curl/7.30.0
Run Code Online (Sandbox Code Playgroud)

我在Global.scala中创建了以下简单的解决方法:

override def onRouteRequest(request: RequestHeader): Option[Handler] = {
  if (request.path.startsWith("http://")) {
    super.onRouteRequest(request.copy(
      path = request.path.replace("http://"+request.host, "")
    ))
  } else super.onRouteRequest(request)
}
Run Code Online (Sandbox Code Playgroud)

通过此解决方法,我的客户端的所有请求都得到了正确处理.

那么,在Play Framework中有更简单的方法吗?或者这是唯一的方法吗?

scala routes playframework playframework-2.1

13
推荐指数
1
解决办法
576
查看次数

使用Apache Http Async Client上传包含分段POST请求的文件

我正在尝试使用Apache HttpAsyncClient库上传一个260k图像文件,作为多部分表单的一部分。

我以这种方式创建表单:

val multipartEntityBuilder = new MultipartEntityBuilder
multipartEntityBuilder.addBinaryBody("file", file)
val multipartEntity = multipartEntityBuilder.build()
Run Code Online (Sandbox Code Playgroud)

然后我基本上是因为库源代码中的这一行而在执行请求时收到ContentTooLongException:https : //github.com/apache/httpclient/blob/4.5.3/httpmime/src/main/java/org/apache/ http / entity / mime / MultipartFormEntity.java#L102

我进行了很多搜索,但没有找到任何解释为什么代码中存在对contentLength的限制。也许有人可以解释吗?我的第二个问题:对大于25 kb的文件进行上传请求的正确方法是什么?

谢谢!

java apache http multipart

1
推荐指数
1
解决办法
692
查看次数