1
在Apache HTTPClient和在RESTLet上運行的JAX-RS服務之間傳輸表單主體時,我很掙扎。PUT在RESTLet和HTTPClient中請求表單主體
這就是我做派PUT請求:
HttpPut put = new HttpPut("http://localhost:1337/api/user/default/inventory");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addTextBody("url", item, ContentType.MULTIPART_FORM_DATA);
put.setEntity(builder.build());
HttpResponse resp = httpClient.execute(put);
我的服務是這樣的:
@PUT
@Produces("application/json")
@Path("user/{id}/inventory")
Public Response addResourceToProfile(@FormParam("url") String url, @PathParam(value="id") String userId, @Context HttpHeaders headers){
try {
UserProfiles.get(userId).addToInventory(url);
return Response.ok("{result:\"success\"}", MediaType.APPLICATION_JSON_TYPE).build();
} catch (Exception e) {
return Response.serverError().build();
}
}
url參數八方通最終被空 ...
因爲我最終會在稍後添加更多參數。而且因爲我需要模擬基於JavaScript的應用程序將發佈的任何內容,儘可能少的解析開銷。 – Michael
@Michael:沒有什麼能阻止你在表單urlencoded請求中擁有更多參數。最有可能來自url編碼是你的Java腳本無論如何使用。如果你確定你需要多部分編碼,那麼你的服務是錯誤的 – oleg