我用HttpClient-MultipartEntity上传文字和图像 服务端没响应。

来源:互联网 发布:网络用语贼g2什么意思 编辑:程序博客网 时间:2024/05/22 15:19

问:

我在做一个 同时传文字和图像的可是我把服务器代码 整死没响应 客户端提示一切正常的很 。有了        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",
                newStringBody(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 extendsHttpServlet {
 
    @SuppressWarnings("unchecked")
    publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
            throwsServletException, IOException {
        booleanisHaveData = 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 0
原创粉丝点击