Отправка на сервер массива байтов

170
09 января 2021, 10:00

У меня есть метод, который отправляет на сервер данные:

public void setFloor(String floor) throws IOException {
    byte[] array = floor.getBytes();
    URL url = new URL("http://localhost:8080/level");
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("POST");
    connection.setDoOutput(true);
    try (BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream())) {
        bos.write(array, 0, array.length);
    }
}

Но все они приходят со знаком "=", то есть при дебагге в массиве байт только один символ, отправляю "6", но на сервер приходит уже "6=" и тд. Как мне это исправить?

Вот код чтения данных на сервере:

@PostMapping()
    public String postEndPoint(@RequestBody String floor) {
        return elevatorService.setFloor(Integer.valueOf(floor));
    }

Вообще, у меня приходят только числовые значения, но тип Integer вообще не доходит, а String приходит с =

Answer 1

Самый простой способ передачи байтов по HTTP, это преобразование этих байтов в Base64 и передачи их как обычный текст. На стороне клиента Вы, при помощи Base64 кодируете массив байтов и отправляете в теле запроса как текст. На сторне сервера, Вы принимаете String и декодируете его обратно в массив байтов.

READ ALSO
AssertionError in JUnit test for LinkedList [дубликат]

AssertionError in JUnit test for LinkedList [дубликат]

Написал свой LinkedList, решил протестировать код и застрял на том, что после использования assertThat падает тест, показывает непонятный пробел перед...

140
Помогите понять клиент-сервер

Помогите понять клиент-сервер

Изучаю серверы, пока на простом уровнеЗадача такая: сервер загадывает число, клиент должен его угадать

149
Не воспроизводится звук

Не воспроизводится звук

я использую следующий код:

163
Удалить одно поле из HashMap при помощи Stream API

Удалить одно поле из HashMap при помощи Stream API

У меня есть JSON с такой структурой:

127