Проблема ContentType с клиентом commons-upload и httpcomponent - PullRequest
0 голосов
/ 10 июня 2010

Я пытаюсь разработать 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();
           ....

Работает нормально, но проблема в том, что Content-type моего FileItem имеет значение null, и позже у меня возникает исключение NullPointerException. Однако когда я выполняю bin.getContentType () на стороне клиента, я получаю «text / xml».

Кто-нибудь знает, когда этот тип контента утерян и как это исправить?

1 Ответ

2 голосов
/ 10 июня 2010

Вы используете неправильный режим.В режиме BROWSER_COMPATIBLE тип содержимого не отправляется на сервер.Вам нужно использовать режим STRICT для отправки content_type.

Однако STRICT может не работать для вас, потому что некоторым веб-серверам это не нравится.

Тип содержимого по умолчанию для FileBody - application /октет-поток.Вы можете изменить это так,

  FileBody bin = new FileBody(new File(myFile), "text/html");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...