POST-запрос с данными формы с использованием Spring RestTemplate - PullRequest
0 голосов
/ 26 сентября 2019

Я должен сделать HTTP-запрос POST с данными формы для внешнего API.В настоящее время я вызываю API с помощью приведенной ниже команды curl

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;
    }
}

1 Ответ

1 голос
/ 27 сентября 2019

Вы можете использовать шаблон отдыха для отправки запроса с данными формы.

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 ).Читать Док

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...