0
发送POST请求的二进制文件(Apache的HttpClient的,这里科特林源代码):检索从POST请求
val httpPost = HttpPost("http://localhost:8000")
val builder = MultipartEntityBuilder.create()
builder.addBinaryBody("file", File("testFile.zip"),
ContentType.APPLICATION_OCTET_STREAM, "file.ext")
val multipart = builder.build()
httpPost.entity = multipart
val r = httpClient.execute(httpPost)
r.close()
我收到通过火花Java的请求对象在我的岗位处理的请求作为。如何从发布请求中检索原始文件(加上文件名作为奖励)? request.bodyAsBytes()方法似乎添加了一些字节,因为正文大于原始文件。
感谢,约尔格
感谢您的回复,但可悲的是这个例子不起作用,因为重新q.raw()。getParts()或req.raw()。getPart(“file”)只需结束后处理程序的执行。 我跟踪了调用,并在spark-java的深处,POST请求被标记为已处理。处理程序仍处于活动状态,但不会在getParts()或getPart()之外执行。 我是Kotlin的新手,因此我不确定这是否是spark-java Kotlin端口的问题。 – osx
如果执行突然停止,很可能是由于例外。使用\t \t'Spark.exception(Exception.class,(e,request,response) - > {e.printStackTrace();});'作为一个额外的路径来确保你看到异常(对不起,Java代码再次不了解Kotlin)。 – cello
再次感谢您的回复。 JetBrains IDE将代码转换为'Spark.exception(Exception :: class.java,{e,request,response - > e.printStackTrace()})',我能够找到一个错误(没有多部分消息)。现在代码归结为(编辑的)代码,给了我一个'java.lang.NullPointerException',因为'getParts()'返回一个空列表,因此'getPart(“file”)'异常。 POST请求的内容类型是'multipart/form-data;边界= Z2Dl0386ZA0OMWccx1VRo6h7emmRriXNz'。 – osx