Отправка двоичных и текстовых данных через HTTP POST - PullRequest
3 голосов
/ 25 января 2012

Я пытаюсь использовать HTTP POST для отправки некоторых данных на сервер. Сервер ожидает двоичные данные в $ _POST ['file'].

        URL url = new URL("http://example.com");
        URLConnection connection = url.openConnection();
        connection.setDoOutput(true);
        OutputStream outputStream =  connection.getOutputStream();
        outputStream.write("file=".getBytes());

                //byte[] buffer contains the data
            outputStream.write(buffer);         
        outputStream.close();

Является ли OutputStream.write правильным методом для записи в поток? Нужно ли обрабатывать строку ("file ="), кроме буфера?

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Я рекомендую преобразовать ваши данные в Base64 String (совместимость со всеми системами).

string result = Convert.ToBase64String(Encoding.UTF8.GetBytes(utf8Text));
0 голосов
/ 25 января 2012

Да, чтобы написать текст с помощью POST, вам нужно будет написать в `OutputStream.

Для параметров вам необходимо создать строку «Строка ключ-значение» (разделенную &) и записать байтовый массив этих данных в OutputStream следующим образом:

String parameterString = "file=" + parameters.get("file") + "&" + "other=" + parameter.get("other");
outputStream.write(parameterString.getBytes("UTF-8"); //Don't forget, HTTP protocol supports UTF-8 encoding.
outputStream.flush();

Чтобы загрузить файл с помощью URLConnection, см. Статью BalusC Как использовать java.net.URLConnection для запуска и обработки HTTP-запросов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...