我用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文件没部署完毕


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值