REST POST works correctly with POSTMAN, but an exception when using Spring RestTemplate

I am writing a Rest client to publish JSON data using Spring RestTemplate. Using POSTMAN and the following JSON data in the body, get the answer correctly -

{
    "InCode":"test",
    "Name":"This is  test",
    "Email":"test@gmail.com",
    "Id":18,
}

However, when trying to get into the REST API using Spring RestTemplate as follows

ResponseEntity<String> response = restTemplate.exchange(baseUrl,
                HttpMethod.POST, getHeaders(), String.class);

private HttpEntity<?> getHeaders() throws JSONException {
JSONObject request = new JSONObject();
        request.put("Email", "test@gmail.com");
        request.put("Id", "18");
        request.put("Name", "This is  test");
        request.put("InCode", "test");

        headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
        return new HttpEntity<>(request.toString(), headers);
        }

I get an exception -

11:52:56.808 [main] DEBUG o.s.web.client.RestTemplate - Created POST request for "http://server-test/platform/v4/org"
11:52:56.815 [main] DEBUG o.s.web.client.RestTemplate - Setting request Accept header to [text/plain, application/json, application/*+json, */*]
12:03:47.357 [main] DEBUG o.s.web.client.RestTemplate - Writing [{"InCode":"test","Email":"test@gmail.com","Id":"18","Name":"This is  test"}] using [org.springframework.http.converter.StringHttpMessageConverter@6a1aab78]
11:52:57.574 [main] DEBUG o.s.web.client.RestTemplate - POST request for "http://server-test/platform/v4/org" resulted in 500 (Internal Server Error); invoking error handler
Exception in thread "main" org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:641)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:597)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:475)

We will be grateful for any help.

+7
source share
3 answers

Http 500, , , REST. , POSTMAN, REST, reponse.getbody , Byteinputstream, REST String. Spring DefaultResponseErrorHandler.

, DefaultResponseErrorHandler TestHandler :

public class TestErrorHandler extends DefaultResponseErrorHandler {

    @Override
    public void handleError(ClientHttpResponse response) throws IOException {
        //conversion logic for decoding conversion
        ByteArrayInputStream arrayInputStream = (ByteArrayInputStream) response.getBody();
        Scanner scanner = new Scanner(arrayInputStream);
        scanner.useDelimiter("\\Z");
        String data = "";
        if (scanner.hasNext())
            data = scanner.next();
        System.out.println(data);
    }
}

ErrorHandler RestTemplate

RestTemplate restTemplate = new RestTemplate(); 
restTemplate.setErrorHandler(new TestErrorHandler());

, . String.

+5

"", , .

"Content-Type" "application/json".

Edit:

java- id - , - . ?

+2

, , , rest Android, . POST " http://10.0.3.2:8080/SpringMvcExample/addreportapii " 500 ( );

Android.

Report report=new Report();
            report.setR_id(1);
            report.setUser_id(userid);
            report.setImagee(imagebytes);
            //report.setImageString(imageString);
            report.setLat(latitude);
            report.setLog(longitude);
            report.setSeverity(severityy);
            report.setTitle(title);
            report.setVideoo(buffer);
            //report.setVideoString(videoString);
            report.setDescription(description);
            report.setAddress(address);
            report.setStatus("pending");

            Toast toast1 = Toast.makeText(AddReport2Activity.this,"before calling api", Toast.LENGTH_SHORT);
            toast1.setMargin(50, 50);
            toast1.show();

            //Defining API Call

            System.out.println("Report information");
            System.out.println(report.getTitle());
            System.out.println(report.getAddress());
            System.out.println(report.getDescription());
            System.out.println(report.getImagee());
            System.out.println(report.getLat());
            System.out.println("Report information");
            System.out.println("Report information");
            System.out.println("Report information");


            RestTemplate restTemplate = new RestTemplate();
            HttpHeaders headers = new HttpHeaders();
            headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
            restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
            HttpEntity<Report> entity = new HttpEntity<Report>(report,headers);
            Report report1=restTemplate.exchange("http://10.0.3.2:8080/SpringMvcExample/addreportapii", HttpMethod.POST, entity, Report.class,report).getBody();
            //if(report1!=null) {
            //Toast toast = Toast.makeText(AddReport2Activity.this,"i am in send report", Toast.LENGTH_SHORT);
            //toast.setMargin(50, 50);
            //toast.show();

            //}
            if(report1!=null) {
                Toast toast = Toast.makeText(AddReport2Activity.this, "i am in send report", Toast.LENGTH_SHORT);
                toast.setMargin(50, 50);
                toast.show();
            }

.

@RequestMapping(value = "/addreportapii", method = RequestMethod.POST)
public ResponseEntity addreportt(@RequestBody Report report) {

    Report reportt = restMethods.addReporttt(report);
    return new ResponseEntity(reportt, HttpStatus.OK);
}

.

public Report addReporttt(Report reportBean) {
    //String image64base = reportBean.getImageString();
    //String base64Image = image64base.split(",")[1];
    byte[] imageBytes = reportBean.getImagee();//javax.xml.bind.DatatypeConverter.parseBase64Binary(base64Image);
    //String video64base = //reportBean.getImageString();
    //String base64video = video64base.split(",")[1];
    byte[] videoBytes = reportBean.getVideoo();//javax.xml.bind.DatatypeConverter.parseBase64Binary(base64video);
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/fyp", "root", "");
        String sql = "INSERT INTO reports(r_title,r_description,r_image,r_video,r_address,r_lat,r_log,r_severity,r_status,user_id) VALUES (?,?,?,?,?,?,?,?,?,?)";
        // RoleBean roleBean = new RoleBean();
        // roleBean = userBean.getRole();
        preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, reportBean.getTitle());
        preparedStatement.setString(2, reportBean.getDescription());
        // preparedStatement.setBytes(3, reportBean.getImagee());
        // preparedStatement.setBytes(4, reportBean.getVideoo());
        preparedStatement.setBytes(3, imageBytes);
        preparedStatement.setBytes(4, videoBytes);
        preparedStatement.setString(5, reportBean.getAddress());
        preparedStatement.setDouble(6, reportBean.getLat());
        preparedStatement.setDouble(7, reportBean.getLog());
        preparedStatement.setString(8, reportBean.getSeverity());
        preparedStatement.setString(9, reportBean.getStatus());
        preparedStatement.setInt(10, reportBean.getUser_id());

        int rowsInserted = preparedStatement.executeUpdate();
        if (rowsInserted > 0) {
            System.out.println("A new ReportNew was Register succesfully");
            return reportBean;
        }
        connection.close();
        preparedStatement.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
0

All Articles