这里直接贴出的是我封装好的doPostFile方法,httpclient 的版本是3.1。
public static String doPostFile(String url, Part[] parts){ String response = null; PostMethod postMethod = new PostMethod(url); try{ //设置请求实体 postMethod.setRequestEntity(new MultipartRequestEntity(parts,postMethod.getParams())); HttpClient client = new HttpClient(); //设置连接超时限度 client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); client.executeMethod(postMethod); if(postMethod.getStatusCode() == HttpStatus.SC_OK){ response = new String(postMethod.getResponseBodyAsString().getBytes("utf-8")); } } catch(Exception e){ LOGGER.error("HttpServiceSender.doPostFile()",e.getMessage()); } finally { postMethod.releaseConnection(); } return response; }
调用此方法的代码,注意参数的传递方式
public String uploadImage(File file,String id,String name){ String result = null; try{ //文件part,new FilePart添加的是File类型的文件,后面StringPart则为字符串参数 Part[] parts = { new FilePart("file", file), new StringPart("id", id), new StringPart("id",name)}; result = HttpServiceSender.doPostFile(SERVER+"service/resource/upload",parts); }catch(Exception e){ Logger.error("ImageService.uploadImage()", e.getMessage()); } return result; }