powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Отправка zip архива tomcat серверу
4 сообщений из 4, страница 1 из 1
Отправка zip архива tomcat серверу
    #37924762
Xsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Xsl
Гость
Всем привет,

Создал сервлет, в котором считываю данные с входящего потока:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
	public byte[] read() throws Exception {
		try {
			InputStream stream = request.getInputStream();
			int len;
			byte[] b = new byte[1024];
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			while ((len = stream.read(b)) != -1) {
				baos.write(b, 0, len);
			}
			stream.close();
			baos.close();
			return baos.toByteArray();
		} catch (Exception e) {
			throw new Exception("Receive data from input stream error: "
					+ e.getMessage());
		}

	}



С другой стороны, есть есть клиент который отправляет zip архив на сервер в чистом виде(в base64 не подходит):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
		try {
			URL url = new URL(
					"http://localhost:8080/Server/send?user=recipient&password=qwerty&group=group&file_name=file1.zip");
			HttpURLConnection con = (HttpURLConnection) url.openConnection();
			con.setDoOutput(true);
			con.setDoInput(true);
			con.setReadTimeout(5000);
			OutputStream os = con.getOutputStream();
			os.write(readFile("D:\\work\\tests\\file1.zip"));
			os.close();
			
			InputStream is = con.getInputStream();
			int len;
			byte[] b = new byte[1024];
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			while ((len = is.read(b)) != -1) {
				baos.write(b, 0, len);
			}
			print(new String(baos.toByteArray()));
			
			con.disconnect();
		} catch (Exception e) {
			e.printStackTrace();
		}



В результате, я получаю на сервере следующую ошибку tomcat:
tomcat21 08 2012 13:20:49 org.apache.tomcat.util.http.Parameters processParameters
INFO: Character decoding failed. Parameter [?*¶^_]?O$..... и т.д. ....has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.

что самое интересное, во время считывания данных с потока, я никакой ошибки не получаю.

Помогите пожалуйста разобраться в чем дело.
...
Рейтинг: 0 / 0
Отправка zip архива tomcat серверу
    #37924807
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HTTP расшифровывается как Hyper text Transfer Protocol
Это протокол в первую очередь для текстовых данных. Поэтому двоичные данные в нем нужно передавать специальным способом.
Начать хотя бы с того что в HTTP существую ещё и методы POST, PUT, GET, заголовки там разные, например Content-Type.
или примеры поискать
https://www.google.com/search?q=send+file+HttpUrlConnection
но лучше взять готовый API
http://hc.apache.org/httpclient-3.x/methods/multipartpost.html
...
Рейтинг: 0 / 0
Отправка zip архива tomcat серверу
    #37924876
Xsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Xsl
Гость
BlazkowiczHTTP расшифровывается как Hyper text Transfer Protocol
Это протокол в первую очередь для текстовых данных. Поэтому двоичные данные в нем нужно передавать специальным способом.
Начать хотя бы с того что в HTTP существую ещё и методы POST, PUT, GET, заголовки там разные, например Content-Type.
или примеры поискать
https://www.google.com/search?q=send+file+HttpUrlConnection
но лучше взять готовый API
http://hc.apache.org/httpclient-3.x/methods/multipartpost.html

На сколько я Вас понял, дело в клиенте который отправляет архив, а не в сервере?
...
Рейтинг: 0 / 0
Отправка zip архива tomcat серверу
    #37924907
Xsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Xsl
Гость
Все верно. Дело в клиенте.

В это случа все работает корректно:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
		try {
			URL url = new URL(
					"http://localhost:8080/Server/send?user=recipient&password=qwerty&group=group&file_name=file1.zip");
			HttpURLConnection con = (HttpURLConnection) url.openConnection();
			con.setDoOutput(true);
			con.setDoInput(true);
			con.setReadTimeout(5000);
                        byte[] bytes = readFile("D:\\work\\tests\\file1.zip");
			con.setRequestProperty("Content-Type", "MultiPart/Form-Data");
			con.setRequestProperty("Content-length", "" + bytes.length);
			OutputStream os = con.getOutputStream();
			os.write();
			os.close();
			
			InputStream is = con.getInputStream();
			int len;
			byte[] b = new byte[1024];
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			while ((len = is.read(b)) != -1) {
				baos.write(b, 0, len);
			}
			print(new String(baos.toByteArray()));
			
			con.disconnect();
		} catch (Exception e) {
			e.printStackTrace();
		}
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Отправка zip архива tomcat серверу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]