Http Post ile belirtilen sınıfı gönderir.
- Birinci paramtre hedef url
- İkinci parametre data + header bilgisi içeren HttpEntity nesnesi
- Üçüncü parametre döndürülecek sonuç nesnesinin T tipidir. Yani Sonuç ResponseEntity<T> tipindendir. Dönüş tipi ResponseEntity<MsToken>, ResponseEntity<String> gibi bir şey olabilir
Örnek - Form Post Etmek
Login olmak için şöyle yaparız. Data MultiValueMap içine doldurulur. Dönüş tipi String
HttpHeaders httpHeaders = new HttpHeaders(); //HeadershttpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED_TYPE);httpHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
MultiValueMap<String,Object> parameters = new LinkedMultiValueMap<> (); //Dataparameters.add("username",username);parameters.add("password",password);parameters.add("remember-me",true);
HttpEntity<MultiValueMap<String,Object>> httpEntity = new HttpEntity
  (parameters,httpHeaders);RestTemplate restTemplate = new RestTemplate();try{  ResponseEntity<String> responseEntity = restTemplate.postForEntity
    ("http:.../login",httpEntity,String.class);  HttpHeaders header = responseEntity.getHeaders();  ...} catch(RestClientException ex){  ...}Örnek - Form Post Etmek
Şöyle yaparız
private MsToken getToken() {
  // create client
  final RestTemplate restTemplate = new RestTemplate();
  // prepare header
  final HttpHeaders headers = new HttpHeaders();
  headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
  // prepare form data
  final MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
  map.add("grant_type", "client_credentials");
  map.add("client_id", appId);
  map.add("client_secret", appPassword);
  map.add("scope", "https://api.botframework.com/.default");
  // prepare request
  final HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map,headers);
  // execute call
  final ResponseEntity<MsToken> response = restTemplate
    .postForEntity(MS_LOGIN_URL, request, MsToken.class);
  return response.getBody();
}Örnek - MULTIPART_FORM_DATA Post Etmek
Şöyle yaparız. Data MultiValueMap içine doldurulur
public void postData(String firstname, String lastname, String fileName,
byte[] fileContents) {HttpHeaders headers = new HttpHeaders();// Set Content Type to multipart/form-dataheaders.setContentType(MediaType.MULTIPART_FORM_DATA);MultiValueMap<String, Object> data = new LinkedMultiValueMap<>();try {// Put form datadata.add("firstname", firstname); //1data.add("lastname", lastname); //2// Put image dataByteArrayResource fileData = new ByteArrayResource(fileContents) {// This override is required because the default method returns null.@Overridepublic String getFilename() {return fileName;}};HttpHeaders parts = new HttpHeaders();final HttpEntity<ByteArrayResource> imageEntity = new HttpEntity<>(fileData, parts);data.add("image", imageEntity); //3// POST form dataHttpEntity<MultiValueMap<String, Object>> requestEntity =
new HttpEntity<>(data, headers);restTemplate.postForEntity(applicationProperties.getDocumentUploadUri(),
requestEntity, String.class);} catch (Exception e) {e.printStackTrace();}}
Örnek - JSON Post Etmek
Boş bir json post göndermek için şöyle yaparız. Burada ResponseEntity<String> olarak kodladık. Karşı taraf ise boolean dönüyor. ResponseEntity nesnesinin body metodu "true" veya "false" değeri taşır.String destinationPort = "8090";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<> (httpHeaders);
String url ="http://localhost:{port}/foo/bar"
ResponseEntity<String> responseEntity = restTemplate.postForEntity(url,entity,
  String.class,destinationPort);
if (responseEntit.getStatusCode() == HttpStatus.OK){
  ...
}
@PostMapping(value="bar")
public boolean bar(){ 
...
}ResponseEntity<String> responseEntity = restTemplate.exchange(url,HttpMethod.POST,entity,
  String.class,destinationPort);
 
Hiç yorum yok:
Yorum Gönder