как скопировать zip и другие файлы в веб-службу REST с помощью Java

#java #web-services #rest #download #fileinputstream

#java #веб-сервисы #rest #Скачать #fileinputstream

Вопрос:

Кто-нибудь знает, как скопировать данные в zip-файл, jar-файл, двоичный файл и другие в веб-службу REST с использованием Java? Я пишу метод веб-службы для копирования файла с помощью FileInputStream , но он может копировать только тип файла.

Спасибо

Комментарии:

1. Что именно вы пытаетесь сделать? У кого есть zip-файл? Загружается ли он? Вы извлекаете данные из него или добавляете к нему данные? (Кроме того, какой фреймворк вы используете, чтобы помочь вам сделать это?)

2. привет, пользователь клиента получит zip-файл. Фактически zip-файл уже загружен в папку пользователя. Используя java io stream, я не могу загрузить zip-файлы, jar-файлы, изображения. Есть другой способ сделать? Теперь я не использую никакой фреймворк. Я делаю это в веб-службе REST в веб-приложении. Я занимаюсь облачным хранилищем для стажировки.

Ответ №1:

Я бы рекомендовал использовать для этого apache httpclient. Ваш код может выглядеть примерно так (обратите внимание, убедитесь, что вы используете версию 4.x или выше):

 HttpClient client = new DefaultHttpClient();
HttpRequestBase httpMethod = httpMethod = new HttpGet(myUrlString);
httpMethod.setHeader("Accept", "application/zip");
HttpResponse response = httpClient.execute(httpMethod);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode != 200) {
    throw new Exception("Bad return status code of: " statusCode);
}
HttpEntity entity = response.getEntity();
if( entity != null) {
    FileOutputStream fos = new FileOutputStream("myFile.zip");
    int nextByte=0;
    InputStream cis = entity.getContent();
    try {
        while( (nextByte = cis.read()) >= 0) fos.write(nextByte);
    } finally {
        fos.close();
        cis.close();
    }
}
  

Я не компилировал это, но вы, вероятно, могли бы запустить это без особых проблем (не стесняйтесь редактировать мой комментарий и исправлять код, если вы попытаетесь скомпилировать это и обнаружите ошибки). Также обратите внимание, что этот код должен в общем случае работать для загрузки чего-либо из веб-запроса (после изменения заголовка «Принять»).