как (просто) сгенерировать HTTP-запрос POST из Java для загрузки - PullRequest
3 голосов
/ 24 ноября 2008

Я хотел бы загрузить файлы из Java-приложения / апплета, используя событие POST http. Я хотел бы избежать использования любой библиотеки, не включенной в SE, если нет другой (выполнимой) опции.
Пока я придумываю только очень простое решение.
- Создайте строку (буфер) и заполните ее совместимым заголовком (http://www.ietf.org/rfc/rfc1867.txt)
). - Откройте соединение с сервером URL.openConnection () и запишите содержимое этого файла в OutputStream.
Мне также нужно вручную преобразовать двоичный файл в событие POST.

Я надеюсь, что есть какой-то лучший, более простой способ сделать это?

Ответы [ 2 ]

8 голосов
/ 27 ноября 2008

Вам необходимо использовать классы 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 перед записью их в соединение.

3 голосов
/ 24 ноября 2008

Вам необходимо узнать о кодированной части, используемой в более новых версиях HTTP. Библиотека Apache HttpClient является хорошей эталонной реализацией для изучения.

...