Я хотел бы загрузить файлы из java-приложения/апплета, используя POST-событие http. Я хотел бы избежать использования любой библиотеки, не включенной в SE, если нет другого (возможного) варианта.
До сих пор я пришел только с очень простым решением.
- Создать строку (буфер) и заполнить ее совместимым заголовком (http://www.ietf.org/rfc/rfc1867.txt)
- Открыть соединение с сервером URL.openConnection() и записать содержимое этого файла в OutputStream.
Мне также нужно вручную преобразовать двоичный файл в событие POST.
Надеюсь, что есть лучший, более простой способ сделать это?как (просто) генерировать POST-запрос HTTP из java для загрузки файла
3
A
ответ
3
Вам нужно узнать о кодировке с кодировкой, используемой в новых версиях HTTP. Библиотека Apache HttpClient является хорошей справочной версией для изучения.
8
Вам необходимо использовать классы java.net.URL
и java.net.URLConnection
.
Есть несколько хороших примеров в http://java.sun.com/docs/books/tutorial/networking/urls/readingWriting.html
Вот некоторые быстрый и противный код:
public void post(String url) throws Exception {
URL u = new URL(url);
URLConnection c = u.openConnection();
c.setDoOutput(true);
if (c instanceof HttpURLConnection) {
((HttpURLConnection)c).setRequestMethod("POST");
}
OutputStreamWriter out = new OutputStreamWriter(
c.getOutputStream());
// output your data here
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(
c.getInputStream()));
String s = null;
while ((s = in.readLine()) != null) {
System.out.println(s);
}
in.close();
}
Обратите внимание, что вам, возможно, нужно UrlEncode() данные POST перед записью соединения.
Пожалуйста, объясните, почему вы не хотите использовать внешнюю библиотеку. Ясно, что это возможно * без каких-либо внешних библиотек, но вы в основном будете дублировать усилия (скажем) HttpClient (http://hc.apache.org/httpcomponents-client/index.html) – 2008-11-24 14:46:00