Cześć,
Robię prosty projekt klient-serwer aplikacji Klienta Pocztowego. Serwer został napisany w Spring-boocie natomiast aplikacja klienta to klasyczna Java ze Swingiem. W kliencie mam dwie metody ResponseEntity:
@RequestMapping(value = "/send", method = RequestMethod.POST)
public ResponseEntity<Void> mail(@RequestBody UserDataDto userDataDto) throws MessagingException {
LOGGER.info("Nazwa odbiorcy: {}, Tytuł: {}, Treść: {} ",
userDataDto.getRecipient(),
userDataDto.getTitle(),
userDataDto.getContent());
return false != mailService.sendMail(userDataDto) ?
new ResponseEntity<>(HttpStatus.OK) :
new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
@RequestMapping(value = "/contacts", method = RequestMethod.GET)
public ResponseEntity<ContactsDto> mail() {
List<Recipients> recipients = new ArrayList<>();
final boolean status = fileRepository.findFile(recipients);
final ContactsDto contactsDto = new ContactsDto(recipients);
LOGGER.info("Nazwa odbiorcow: {} ",
contactsDto.getContacts());
return false != status ?
new ResponseEntity<>(contactsDto, HttpStatus.OK) :
new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
Przy użyciu postmana wszystko działa okej. O ile nie mam problemów z pobraniem w kliencie JSONa z Get, co robię w ten sposób:
final HttpClient client = HttpClientBuilder.create().build();
final HttpGet request = new HttpGet("http://127.0.0.1:8080/email/contacts");
final HttpResponse response; // Otrzymujemy odpowiedz od serwera.
final Gson gson = new Gson();
try {
response = client.execute(request);
final HttpEntity entity = response.getEntity();
final String json = EntityUtils.toString(entity);
System.out.println("Odczytujemy JSON'a z serwera:");
System.out.println(json);
final ContactsJson contactsJson = gson.fromJson(json, ContactsJson.class);
for (Recipients r : contactsJson.getContacts())
recipientBox.addItem(r.getRecipient().toString());
System.out.println("Kod odpowiedzi serwera: " + response.getStatusLine().getStatusCode());
System.out.println(contactsJson.getContacts());
sendButton.setEnabled(true);
titleField.setEnabled(true);
messageField.setEnabled(true);
} catch (IOException e) {
e.printStackTrace();
}
Tak totalnie nie wiem jak się za to zabrać dla POSTa, któremu JSONa muszę przekazać. Próbowałem tworzyć obiekt klasy, odpowiadającej UserDataDto z ResponseEntity i zamienić na JSONa przy pomocy biblioteki gson. Tylko co dalej.