【发布时间】:2012-08-21 02:06:56
【问题描述】:
我正在尝试从 java spring 控制器调用 web 服务。下面是代码
private void storeImages(MultipartHttpServletRequest multipartRequest) {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(
"http://localhost:8080/dream/storeimages.htm");
MultipartFile multipartFile1 = multipartRequest.getFile("file1");
MultipartEntity multipartEntity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("file1",
new ByteArrayBody(multipartFile1.getBytes(),
multipartFile1.getContentType(),
multipartFile1.getOriginalFilename()));
postRequest.setEntity(multipartEntity);
HttpResponse response = httpClient.execute(postRequest);
if (response.getStatusLine().getStatusCode() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
}
以上只是部分代码。我正在尝试确定如何在服务器端检索它。在服务器端,我有以下 Spring 控制器代码
@RequestMapping(value = "/storeimages.htm", method = RequestMethod.POST)
public ModelAndView postItem(HttpServletRequest request,
HttpServletResponse response) {
logger.info("Inside /secure/additem/postitem.htm");
try {
// How to get the MultipartEntity object here. More specifically i
// want to get back the Byte array from it
} catch (Exception ex) {
ex.printStackTrace();
}
return new ModelAndView("success");
}
我执行了这段代码,我的控制权转移到了服务器端。但我被困在如何从多方对象中取回字节数组。
编辑要求: 这是要求。用户从网站上传图像(已完成并正常工作) 表单提交后控件转到 Spring 控制器(已完成并正常工作) 在 Spring 控制器中,我使用 Multipart 来获取表单的内容。 (这已经完成并且正在工作)现在我想调用一个 Web 服务,它将图像字节数组发送到图像服务器。(这需要完成)在图像服务器上,我想接收这个 Web 服务请求从 HTTPServlerRequest 获取所有字段,存储图像并返回(这个需要做)
【问题讨论】:
-
您的目标是什么 Servlet 版本?从 servlet 3.0 开始,HttpServletRequest 有了一个getParts() 方法,该方法随后可用于获取 InputStream。
-
如何检查我是否在使用 Servlet 3.0。我正在使用 tomcat 7。我试过写这个,但似乎没有用。列表大小为 0。 List
formData = new ArrayList(request.getParts());部分部分 = formData.get(0);字符串参数名称 = part.getName(); logger.info("STORC 图片 - " + parameterName); -
@user1241438Ö Tomcat 7 是一个 Servlet 3.0 容器
标签: java web-services spring apache tomcat