我正在为中文设备制造服务器,该固件不能以任何方式更改。
它使用headers-> content-type:[application / octet-stream]将请求正文中的JSON数据发送到我的服务器。现在在Spring引导中获取body,在body的开头和结尾都有一些垃圾字符。 身体:
。{“ fk_name”:“ FK_DEV”,“ fk_time”:“ 20190218130839”,“ fk_info”:{“ supported_enroll_data”:[“ FP”,“ PASSWORD”,“ IDCARD”],“ fk_bin_data_lib”:“ FKDATAHS101 “,” firmware“:” WS535BV1_BCLK_v1.5.20“,” firmware_filename“:” WS435B“,” fp_data_ver“:112}}
我尝试获取第一次出现的“ {”和最后一次出现的“}”之间的数据。但是其他一些请求的结尾垃圾字符带有'}'括号。
@RequestMapping("/*")
public ResponseEntity<String> greeting(@RequestHeader HttpHeaders headers, @RequestHeader("request_code") String request_code,
@RequestHeader("dev_id") String dev_id,
@RequestBody String pBody) {
System.out.println();
System.out.println("Incoming Request Start--------------------------------------");
for (Map.Entry<String, List<String>> e:
headers.entrySet()) {
System.out.println(e.getKey() + " : " + e.getValue());
}
System.out.println("Yolo " + request_code + " " + dev_id);
System.out.println(pBody);
System.out.println(pBody.substring(pBody.indexOf('{'), pBody.lastIndexOf('}') + 1));
HttpHeaders headersR = new HttpHeaders();
headersR.add("response_code", "OK");
System.out.println("Incoming Request End--------------------------------------");
System.out.println();
return new ResponseEntity<>(headersR, HttpStatus.OK);
}
我的问题:我需要从响应正文中获取json字符串。
答案 0 :(得分:0)
我最后没有看到任何垃圾(也许可以澄清)。
您在前面看到的可能是UTF-8字节顺序标记,发件人不应该包括该标记,但是收件人可以安全地删除。参见RFC 8259, Section 8.1。