У меня есть приложение Spring Boot, доступное через REST.
После получения запроса оно возвращает многочастные данные вызывающей стороне. Запрашивающее приложение перебирает данные Multipart и печатает ответ.
Как видно из кода ниже, составной ответ имеет два разных типа контента: application/json и данные vnd.3gpp.5gnas, разделенные границами.
Я успешно могу прочитать данные application/json.
Однако , когда я пытаюсь прочитать данные vnd.3gpp.5gnas, выходные данные полностью отличаются от того, что было отправлено изначально.
Данные массива байтов, отправленные для vnd.3gpp.5gnas данные представляют собой шестнадцатеричный массив байтов, как вы можете видеть в приведенном ниже коде.
Может ли кто-нибудь помочь определить, как правильно читать шестнадцатеричный массив байтов?
Код для отправки составного байтового массива
private byte[] createMultipartContent(String jsonData, String boundary)
throws IOException, DecoderException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
// write JSON part
dataOutputStream.writeBytes("--" + boundary + "\r\n");
//dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"xml\"\r\n");
dataOutputStream.writeBytes("Content-Type: application/json\r\n");
dataOutputStream.writeBytes("\r\n");
dataOutputStream.write(jsonData.getBytes());
dataOutputStream.writeBytes("\r\n");
// write binary part
dataOutputStream.writeBytes("--" + boundary + "\r\n");
//dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"binary\"\r\n");
dataOutputStream.writeBytes("Content-Id: n1msg\r\n");
dataOutputStream.writeBytes("Content-Type: application/vnd.3gpp.5gnas\r\n");
dataOutputStream.writeBytes("\r\n");
dataOutputStream.write(Hex.decodeHex(
"c27b000f80000d040aa8dcef000d040ab100d2"));
dataOutputStream.writeBytes("\r\n");
// write boundary
dataOutputStream.writeBytes("--" + boundary + "--\r\n");
return outputStream.toByteArray();
}
Код для чтения составных данных
public String parseMultipartData(
MimeMultipart mimeMultipart) {
String result = null;
// Iterate over each part in the MimeMultipart object
try {
for (int i = 0; i < mimeMultipart.getCount(); i++) {
BodyPart bodyPart = mimeMultipart.getBodyPart(i);
// Extract content type of this body part
String contentType = bodyPart.getContentType();
if (contentType.equals("application/json")) {
byte[] bytes = IOUtils.toByteArray(
bodyPart.getInputStream());
result = new String(bytes);
} else if (
contentType.equals("vnd.3gpp.5gnas")) {
byte[] bytes = IOUtils.toByteArray(
bodyPart.getInputStream());
result = new String(bytes);
}
}
} catch (MessagingException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
return result;
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... 3gpp-5gnas
Невозможно прочитать составные данные для типа контента vnd.3gpp.5gnas. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Кто-нибудь разрабатывал проекты с использованием AISG и 3GPP для управления RET?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-