неверный начальный байт utf-8 0xb0 - PullRequest
0 голосов
/ 25 октября 2018

В Java я добавляю некоторые свойства в объект JSON и отправляю эти значения в URL-адрес HTTPS (REST API).Сервер выдает какую-то ошибку, например «неверный стартовый байт utf-8 0xb0».Ниже мой код:

final String urlString = "https://connect.pointclickcare.com/api/public/preview1/orgs/"+vitalStat.get("customer")+"/observations";

String authorization = "Bearer "+vitalStat.get("accessToken");

JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("type", vitalStat.get("type"));

jsonObject.addProperty("patientId", patientInfo.getPatientId());

jsonObject.addProperty("deviceId", vitalStat.get("deviceId"));

jsonObject.addProperty("deviceName", vitalStat.get("deviceName"));
jsonObject.addProperty("recordedDate", vitalStat.get("recordedDate"));
jsonObject.addProperty("value", vitalStat.get("value"));

jsonObject.addProperty("method", vitalStat.get("method"));
if(vitalStat.get("type").equals("temperature"))
{
    jsonObject.addProperty("unit", "°F");   
}
else{
    jsonObject.addProperty("unit", vitalStat.get("unit"));
}
if(vitalStat.get("type").equals("bloodPressure"))
{
    String[] split = vitalStat.get("value").split("/");
    jsonObject.addProperty("systolicValue", split[0]);
    jsonObject.addProperty("diastolicValue", split[1]);
    jsonObject.remove("value");
}

HttpURLConnection connection = null;

try {
    final URL url = new URL(urlString);

    connection = (HttpURLConnection) url.openConnection();

    connection.setRequestMethod(HttpMethod.POST);
    connection.setDoOutput(true);
    connection.setRequestProperty("Content-Type",MediaType.APPLICATION_JSON);
    connection.setRequestProperty("Accept", MediaType.APPLICATION_JSON);
    connection.setRequestProperty("Authorization", authorization);

    final OutputStream outputStream = connection.getOutputStream();

    final DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
    dataOutputStream.writeBytes(jsonObject.toString());
    dataOutputStream.close();

    System.out.println(connection.getResponseMessage());

1 Ответ

0 голосов
/ 25 октября 2018

Вы не хотите использовать DataOutputStream.Он имеет свою собственную кодировку данных и, конечно, не совместим с JSON.Вместо этого вам нужно сериализовать данные JSON так, чтобы генерировалось строковое представление JSON (в UTF-8).

Я предполагаю, что вы используете JsonObject из org.json.В этом случае код должен выглядеть примерно так:

final OutputStream outputStream = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
jsonObject.write(writer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...