Java commons上载和httpcomponent客户端的ContentType问题

Java commons上载和httpcomponent客户端的ContentType问题,java,file-upload,content-type,httpclient,Java,File Upload,Content Type,Httpclient,我正在尝试开发一个Http客户端,该客户端上载带有httpcomponents的文件: HttpPost httppost = new HttpPost(myURL); httppost.setHeader("Content-type", "multipart/form-data; boundary=stackoverflow"); httppost.setHeader("Accept", "text/xml"); MultipartEntity reqEntity = new m

我正在尝试开发一个Http客户端,该客户端上载带有httpcomponents的文件:

HttpPost httppost = new HttpPost(myURL);
httppost.setHeader("Content-type",
       "multipart/form-data; boundary=stackoverflow");
httppost.setHeader("Accept", "text/xml");
MultipartEntity reqEntity = new multipartEntity(
       HttpMultipartMode.BROWSER_COMPATIBLE,"stackoverflow",
       Charset.forName("UTF-8"));
FileBody bin = new FileBody(myFile);
reqEntity.addPart("File", bin);
httppost.setEntity(reqEntity);
HttpResponse response = client.execute(httppost);
在服务器端,有一个

doPost(HttpServletRequest request, HttpServletResponse response)
解析请求的方法:

FileItemFactory factory = new DiskFileItemFactory(204800, new File(
                    uploadDirectory));
ServletFileUpload fileUpload = new ServletFileUpload(factory);
try {
     List<FileItem> items = fileUpload.parseRequest(request);
     Iterator<FileItem> itemIterator = items.iterator();
     while (itemIterator.hasNext()) {
          FileItem item = itemIterator.next();
           ....
FileItemFactory工厂=新的DiskFileItemFactory(204800,新文件(
上传目录);
ServletFileUpload fileUpload=新建ServletFileUpload(工厂);
试一试{
列表项=fileUpload.parseRequest(请求);
迭代器Iterator=items.Iterator();
while(itemIterator.hasNext()){
FileItem=itemIterator.next();
....
它工作得很好,但问题是我的FileItem的内容类型为null,稍后会出现NullPointerException。但是,当我在客户端执行bin.getContentType()时,会得到“text/xml”


有人知道此内容类型何时丢失以及如何修复吗?

您使用了错误的模式。在浏览器兼容模式下,内容类型不会发送到服务器。您需要使用严格模式发送内容类型

但是,STRICT可能不适合您,因为某些web服务器不喜欢它

FileBody的默认内容类型是application/octet stream。您可以这样更改它

  FileBody bin = new FileBody(new File(myFile), "text/html");