SpringBoot中RestTemplate请求报Bad Message 400非法空格问题求助
SpringBoot RestTemplate 400 Bad Message(Illegal character SPACE=' ')问题排查
问题根源
HTTP协议明确规定请求头名称不能包含空格,你代码中设置的X-Original Signer请求头名称带有空格,服务器解析请求时无法识别该非法格式,直接返回400错误。
修复方案
将带空格的请求头名称改为符合规范的格式,比如用连字符替代空格:
// 原错误写法 // headers.set("X-Original Signer", "signer"); // 修复后写法 headers.set("X-Original-Signer", "signer");
修复后的完整请求代码
headers.set("Content-Type", "text/xml;charset=utf-8"); headers.setBasicAuth("XXXX", "YYYY"); headers.set("X-Original-Signer", "signer"); headers.set("X-Signature","signature"); HttpEntity<?> entity = new HttpEntity<>(request, headers); try{ String fetch=restTemplate.postForObject(url, entity, String.class); return new ResponseEntity<>(fetch, HttpStatus.OK); } catch(Exception e){ e.printStackTrace(); return new ResponseEntity<>(e.getMessage(), HttpStatus.OK); }
补充说明
你的RestTemplate SSL配置部分没有问题,无需调整,本次错误完全由非法请求头格式导致。
内容的提问来源于stack exchange,提问作者ernest.ojakol
相关产品推荐
相关产品推荐

