简体   繁体   中英

Sending a Post Request Throw 500 Internal error

Every time I try to send a post request, I get 500 error.Post request via postman works fine too, so there is no problems on the server side. What is the Mistake?

Controller

package com.neostencil.services;

import com.neostencil.leadsquard.LeadCapture;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

@Service
public class LeadSquardService {

  private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());

  @Value("${leadsquard.accesskey}")
  private String access_key;

  @Value("${leadsquard.secretkey}")
  private String serect_key;

  /**
   * Create a New User in Lead Capture.
   * @param leadCapture
   * */
  public void createNewUserInLeadCapture(LeadCapture leadCapture) {

    MultiValueMap<String, String> mapdata = new LinkedMultiValueMap<>();
    mapdata.add("FirstName", leadCapture.getFirstName());
    mapdata.add("Phone", "");
    mapdata.add("EmailAddress", leadCapture.getEmailAddress());
    mapdata.add("mx_Courses", leadCapture.getMx_courses());


    UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("hostUrl");
    builder.queryParam("accessKey" , access_key );
    builder.queryParam("secretKey", serect_key);


    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    //headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);

    try {
      HttpEntity<MultiValueMap<String,String>> requestEntity = new HttpEntity<>(mapdata, headers);


      RestTemplate restTemplate = new RestTemplate();
      ResponseEntity<String> response = restTemplate.exchange(builder.build().toUriString(), HttpMethod.POST, requestEntity, String.class);

      HttpStatus statusCode = response.getStatusCode();
      if (statusCode == HttpStatus.ACCEPTED) {

        System.out.println("ResponseEntity : " + response.getBody());
      }
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

PrintStackTrace

org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error
    at org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:79)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:124)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102)
    at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:777)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:735)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:669)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:578)
    at com.neostencil.services.LeadSquardService.createNewUserInLeadCapture(LeadSquardService.java:57)
    at ...

You can try with passing JSON String ,

HttpEntity<String> requestEntity = new HttpEntity<>(new Gson().toJson(mapdata), headers);

A better option would be to create a POJO to map request.

HttpEntity<User> requestEntity = new HttpEntity<User>(user, headers);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM