如何在发出POST请求时不转义Spring RestTemplate中的表单正文字符?
我有下面的代码,我是在做一个POST表单请求。请求正文包含用户名和密码。密码包含@个字符,该字符被RestTemplate替换为%40,我收到“未经授权”错误,因为密码现在是错误的。 以下是bufferOutput(请求正文)的调试信息 下面是进行调用的代码段如何在发出POST请求时不转义Spring RestTemplate中的表单正文字符?,spring,http,spring-boot,resttemplate,Spring,Http,Spring Boot,Resttemplate,我有下面的代码,我是在做一个POST表单请求。请求正文包含用户名和密码。密码包含@个字符,该字符被RestTemplate替换为%40,我收到“未经授权”错误,因为密码现在是错误的。 以下是bufferOutput(请求正文)的调试信息 下面是进行调用的代码段 MultiValueMap<String, String> formData = new LinkedMultiValueMap<String, String>(); String url = "SOME_URL"
MultiValueMap<String, String> formData = new LinkedMultiValueMap<String, String>();
String url = "SOME_URL";
formData.add("username", "xay@gmail.com");
formData.add("password", "@name321");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String,String>> requestEntity = new HttpEntity<MultiValueMap<String,String>>(formData,headers);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
restTemplate.exchange(url, HttpMethod.POST, requestEntity, Authentication.class,"321");
MultiValueMap formData=新链接的MultiValueMap();
String url=“SOME_url”;
formData.add(“用户名”xay@gmail.com");
添加(“密码”、“@name321”);
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION\u FORM\u URLENCODED);
HttpEntity requestEntity=新的HttpEntity(formData,Header);
RestTemplate RestTemplate=新RestTemplate();
restemplate.getMessageConverters()
.add(0,新的StringHttpMessageConverter(Charset.forName(“UTF-8”));
交换(url,HttpMethod.POST,requestEntity,Authentication.class,“321”);
问题是如何告诉restTemplate不要转义身体数据?
请注意,请求必须是post表单请求,我无法使用UriComponentsBuilder解决此问题。我认为您需要向RestTemplate中添加一个,而不是StringHttpMessageConverter。rest模板调用在哪里?添加缺少的调用您的URL编码??
MultiValueMap<String, String> formData = new LinkedMultiValueMap<String, String>();
String url = "SOME_URL";
formData.add("username", "xay@gmail.com");
formData.add("password", "@name321");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String,String>> requestEntity = new HttpEntity<MultiValueMap<String,String>>(formData,headers);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
restTemplate.exchange(url, HttpMethod.POST, requestEntity, Authentication.class,"321");