首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无效的utf-8起始字节0xb0

无效的utf-8起始字节0xb0
EN

Stack Overflow用户
提问于 2018-10-25 21:29:32
回答 1查看 487关注 0票数 0

在Java中,我向JSON对象添加了一些属性,并将这些值发送到HTTPS URL (REST API)。服务器抛出一些错误,比如“无效的utf-8开始字节0xb0”。下面是我的代码:

代码语言:javascript
复制
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());
EN

回答 1

Stack Overflow用户

发布于 2018-10-26 00:19:27

您不想使用DataOutputStream。它有自己的数据编码,并且肯定与JSON不兼容。相反,您必须序列化JSON数据,以便生成JSON (UTF-8格式)的字符串表示。

我假设您使用的是来自org.jsonJsonObject。在这种情况下,代码应该如下所示:

代码语言:javascript
复制
final OutputStream outputStream = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
jsonObject.write(writer);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52990504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档