我必须向包含外部API的表单数据发出HTTP POST请求。目前,我正在使用以下curl命令调用API
curl https://books.zoho.com/api/v3/contacts?organization_id=10234695
-X POST
-H "Authorization: Zoho-oauthtoken 216793f385b9dd6e125f"
-H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
-F 'JSONString="{
"contact_name": "Bowman and Co",
"company_name": "Bowman and Co",
"website": "www.bowmanfurniture.com",
"contact_type": "customer"
}
我已经实现了ClientHttpRequestInterceptor
接口,并向RestTemplate
注册了拦截器。我不确定如何发布带有表单数据的HTTP请求。请让我知道如何提交表单数据或指向任何参考。
在我的Controller类中:
@RestController
@RequestMapping("/api/v1/contacts")
public class ContactController {
@Autowired
private RestTemplate restTemplate;
@PostMapping("/")
public Invoice createContact(@RequestBody Contact contact){
//TODO
return null;
}
}
答案 0 :(得分:1)
您可以使用rest模板通过表单数据发出发布请求。
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
map.add("data", "data");
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
ResponseEntity<String> response = restTemplate.postForEntity( url, request , String.class );
Spring将自动处理在这种情况下使用的消息转换器。(使用的消息转换器将是 FormHttpMessageConverter )。 阅读Doc