1. 程式人生 > >我用HttpClient-MultipartEntity上傳文字和影象 服務端沒響應。

我用HttpClient-MultipartEntity上傳文字和影象 服務端沒響應。

問:

我在做一個 同時傳文字和影象的可是我把伺服器程式碼 整死沒響應 客戶端提示一切正常的很 。有了        boolean isHaveData = ServletFileUpload.isMultipartContent(request);就不行了 就像阻塞了一樣。
下面我把客戶端和伺服器端的程式碼貼出來。

[Java] 檢視原始檔 複製程式碼
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 /** 上傳文字加圖片 */ public void postDataFile(String serverUrl, String fileurl, String data) { Log.e("test", "load" + serverUrl); Log.e("test", "load" + fileurl); Log.e("test", "load" + data); HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(serverUrl); MultipartEntity mpEntity =
new MultipartEntity(); try { File file = new File(fileurl); FileBody fileBody = new FileBody(file); mpEntity.addPart("file", fileBody); mpEntity.addPart( "data", new StringBody(data, Charset .forName(org.apache.http.protocol.HTTP.UTF_8))); post.setEntity(mpEntity); HttpResponse response = client.execute(post);
if (response.getStatusLine().getStatusCode() == 200) { String content = EntityUtils.toString(response.getEntity(), "utf-8"); ho.handleEvent(content);//回撥函式 } Log.e("test", "IsOk"); } catch (Exception e) { Log.e("test", "出錯了:"+e); } finally { if (mpEntity != null) { try { mpEntity.consumeContent(); } catch (UnsupportedOperationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } client.getConnectionManager().shutdown(); } }



下面是伺服器程式碼:

[Java] 檢視原始檔 複製程式碼
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 public class SaveDataFile extends HttpServlet { @SuppressWarnings("unchecked") public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean isHaveData = ServletFileUpload.isMultipartContent(request); if (isHaveData) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List items = upload.parseRequest(request); Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { // 普通文字資訊處理 String paramName = item.getFieldName(); String paramValue = item.getString(); System.out.println(paramName + ":" + paramValue); } else { // 上傳檔案資訊處理 String fileName = item.getName(); byte[] data = item.get(); String filePath = getServletContext().getRealPath( "/files") + "/" + fileName; FileOutputStream fos = new FileOutputStream(filePath); fos.write(data); fos.close(); } } } catch (FileUploadException e) { e.printStackTrace(); } } response.getWriter().write("isok"); }



當我註釋伺服器獲取檔案的程式碼 伺服器就有響應了 而且客戶端也能收到來自伺服器的迴應。
答:

 程式碼沒的錯誤! 是佈置的問題  因為伺服器 相關jar檔案沒部署完畢