HttpClient и извлечение аудио из ответа сервера - PullRequest
0 голосов
/ 01 сентября 2011

Я использую Apache HttpClient для подключения к серверу для загрузки WAV-файла. Я использую метод HTTP POST в моей программе.

Сервер правильно отвечает следующим заголовком и телом:

> HTTP/1.1 200 OK\r\n Content-Disposition: attachment;
> filename=saveme1.mp3\r\n Content-Length: 6264\r\n
> Content-Transfer-Encoding: binary\r\n Content-Type: audio/mp3\r\n

Как мне теперь извлечь файл saveme1.mp3 из ответа HTTP? Я использую следующий код:

       ResponseHandler<String> responseHandler = new BasicResponseHandler();
       byte[] data = httpclient.execute(httppost, responseHandler).getBytes();

Тем не менее, я получаю мусор при записи данных в файл.

FileOutputStream fileoutputstream = new FileOutputStream(outputFile);
for (int i = 0; i < data.length; i++) 
        fileoutputstream.write(data[i]);

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Если вы хотите скачать mp3, я думаю, что самый простой способ:

HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();

Теперь у вас есть сущность, и вы можете вызвать entity.getContent ();Это дает вам inputStream, теперь вы можете сохранить этот поток любым способом, который вам нужен, конечно же, вам понадобится mime-тип и имя файла для сохранения вашего файла.если у вас есть проблемы с именем файла и типом mime, скажите мне добавить пример кода.

0 голосов
/ 01 сентября 2011

Вы получаете вложение MIME, которое вам необходимо проанализировать в первую очередь.BasicResponseHandler просто возвращает строку ответа, но вам нужно тело вложения, которое содержит двоичный файл вашего .mp3.Вам необходимо выполнить следующие шаги:

  • Понимать формат MIME.Вы можете просмотреть Википедию для быстрого знакомства
  • После того, как вы поняли, вам нужно создать MIME Parser.Это в основном извлечет каждую часть сообщения MIME, особенно тело вашего вложения.Я думаю, что должно быть что-то, что вы могли бы использовать повторно.Вы, вероятно, должны выглядеть MimeMultipart .Единственное, в чем я не уверен, так это в том, обрабатывает ли он «двоичное» кодирование в вашем сообщении.
  • Создайте свое собственное расширение ResponseHandler, которое будет использовать MIME Parser, который вы использовали на предыдущем шаге
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...