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