The issue I am facing that my data is successfully converted in JSON format but I am getting 500 invalid command
I Have used Sout to show the console output for debugging
Customer{first_name='jhon', last_name='smit', street='New Street', address='Wellington', city='NY', state='NY', email='[email protected]', phone='2100989877'}
[Authorization:"Bearer dGVzdEBzdW5iYXNlZGF0YS5jb206VGVzdEAxMjM=", Content-Type:"application/json"]
{"first_name":"jhon","last_name":"smit","street":"New Street","address":"Wellington","city":"NY","state":"NY","email":"[email protected]","phone":"2100989877"}
org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 500: ">Invalid Command"
@Service
public class CustomerCreatingService {
@Value("${auth.token}")
private String authToken;
private final RestTemplate restTemplate;
public CustomerCreatingService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public String createCustomer(String first_name, String last_name, String street, String address,
String city, String state, String email, String phone) {
// Construct the URL for API call
String url = "https://qa2.sunbasedata.com/sunbase/portal/api/assignment.jsp";
// Set up headers
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + authToken);
headers.setContentType(MediaType.APPLICATION_JSON);
System.out.println(headers);
// Body
Customer customer = new Customer(first_name, last_name, street, address, city, state, email, phone);
ObjectMapper mapper = new ObjectMapper();
String customerJson = "";
try {
customerJson = mapper.writeValueAsString(customer);
} catch (Exception e) {
e.printStackTrace();
return "Error serializing customer: " + e.getMessage();
}
HttpEntity<String> entity = new HttpEntity<>(customerJson, headers);
System.out.println(entity.getBody());
// Make the API call
try {
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
System.out.println(response);
return "Successfully Created";
} catch (Exception e) {
if (e instanceof HttpClientErrorException) {
String responseBody = ((HttpClientErrorException) e).getResponseBodyAsString();
System.out.println("API Response: " + responseBody);
}
e.printStackTrace();
return "Error: " + e.getMessage();
}
}
}
CustomerController class
package com.example.demo.controller;
import com.example.demo.entity.Customer;
import com.example.demo.service.AuthService;
import com.example.demo.service.CustomerCreatingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
public class CustomerController {
private final CustomerCreatingService customerCreatingService;
@Autowired
public CustomerController(CustomerCreatingService customerCreatingService) {
this.customerCreatingService = customerCreatingService;
}
@GetMapping("customer/create")
public String showCreateCustomerForm() {
return "createCustomer"; // This should map to the HTML page for creating a customer
}
@PostMapping("/create")
@ResponseBody
public String createCustomer(@ModelAttribute Customer customer) {
System.out.println(customer);
return customerCreatingService.createCustomer(customer.getFirst_name(),
customer.getLast_name(),
customer.getStreet(),
customer.getAddress(),
customer.getCity(),
customer.getState(),
customer.getEmail(),
customer.getPhone());
}
}
Customer class
package com.example.demo.entity;
public class Customer {
private String first_name;
private String last_name;
private String street;
private String address;
private String city;
private String state;
private String email;
private String phone;
// Constructor
public Customer() {
}
public Customer(String first_name, String last_name, String street, String address,
String city, String state, String email, String phone) {
this.first_name = first_name;
this.last_name = last_name;
this.street = street;
this.address = address;
this.city = city;
this.state = state;
this.email = email;
this.phone = phone;
}
// Getters and setters
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
// Optionally, you can also override `toString()` method for debugging purposes
@Override
public String toString() {
return "Customer{" +
"first_name='" + first_name + '\'' +
", last_name='" + last_name + '\'' +
", street='" + street + '\'' +
", address='" + address + '\'' +
", city='" + city + '\'' +
", state='" + state + '\'' +
", email='" + email + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
Customer Html file
<!DOCTYPE html>
<html>
<head>
<title>Create Customer</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
<h2>Create Customer</h2>
<form action="/create" method="post">
<div class="form-group">
<label for="first_name">First Name*</label>
<input type="text" class="form-control" id="first_name" name="first_name" required>
</div>
<div class="form-group">
<label for="last_name">Last Name*</label>
<input type="text" class="form-control" id="last_name" name="last_name" required>
</div>
<div class="form-group">
<label for="street">Street</label>
<input type="text" class="form-control" id="street" name="street">
</div>
<div class="form-group">
<label for="address">Address</label>
<input type="text" class="form-control" id="address" name="address">
</div>
<div class="form-group">
<label for="city">City</label>
<input type="text" class="form-control" id="city" name="city">
</div>
<div class="form-group">
<label for="state">State</label>
<input type="text" class="form-control" id="state" name="state">
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" name="email">
</div>
<div class="form-group">
<label for="phone">Phone</label>
<input type="text" class="form-control" id="phone" name="phone">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</body>
</html>