我有一個JAX-RS REST服務,使用JEE 7(部署GlassFish中),其具有用於處理所述資源的HTTP POST方法:消費在JAX-RS REST服務muiltipart POST數據
@POST
@Path(value="{dId}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response sendStatus(@Context HttpServletRequest request)
我嘗試提取多部分數據爲:
Collection<Part> parts = request.getParts();
if(parts==null || parts.isEmpty()){
lg.warn("Empty/non-existent parts in request body!");
return sendBadRequestError(sp);
}
然後我嘗試模擬客戶端多部分POST請求,使用RESTClient實現(從wiztools.org)中,用至少2個部分中的不同內容類型的(邊界定界符是自動由RESTClient工具設置)。
我在wireshark中驗證它是否從RESTClient發送了正確的請求(沒有格式錯誤的數據包等)。
但是,所有的請求似乎都碰到包含消息中請求主體中空的/不存在的部分的塊,表明請求中沒有找到任何部分。
我在發佈之前多次搜索過Stackoverflow,並且所有示例/解決方案都涉及到用例上傳文件/圖像的情況,這不是我正在處理的情況。
我的rest服務只是消費一個多部分請求,它可以包含一個帶有JSON數據的部分,另一個帶有簡單字符串或其他JSON數據的部分。
有什麼東西丟失 - 請幫忙嗎?。是否有其他技術來分析碰到REST服務的多部分數據?
請指教。
謝謝。 J
JSR-339的第9章規定哪些類型可以與'@ Context'一起使用。如果你使用'@ FormParam'而不是它工作?或者使用Request(http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Request.html)接口而不是HttpServletRequest? –
我想澤西已經讀過輸入流。使用Jersey multipart API而不是直接訪問HttpServletRequest。見[多部分支持](https://jersey.java.net/documentation/latest/media.html#multipart) –
感謝MartijnBurger和peeskillet的建議。讓我嘗試這些選項並回來。 – Javy