Salve a tutti.
Sto lavorando su Spring, con cui ho creato un progetto Boot, il cui scopo è esporre alcuni servizi REST per l'accesso al database.
In particolare, ho scritto una classe che espone alcuni servizi, tra cui il seguente:
L'oggetto repository è definito come rappresentante della seguente interfaccia:codice:@RequestMapping(value = "/saveContact", method = RequestMethod.POST) public ResponseEntity<Contact> saveContact(@RequestBody Contact contact) { System.out.println("saveContact"); try { repository.save(contact); return new ResponseEntity<>(contact, HttpStatus.CREATED); } catch (Exception e) { System.out.println(e.getMessage()); return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } }
Ho testato il metodo saveContact usando Postman e passando, come body di una richiesta POST, un file in formato JSON:codice:package it.biagio.repository; import org.springframework.data.repository.CrudRepository; import it.biagio.entities.Contact; public interface ContactInterface extends CrudRepository<Contact, Integer> { public Iterable<Contact> findByUserId(int id); }
Ora, vorrei che un'applicazione web (sempre creata in Spring, che lavora su Tomcat 9), basata su servlet, fosse in grado di leggere i dati di un nuovo contatto da una form, creare un testo JSON correttamente formattato e sfruttare il servizio REST della prima applicazione per il salvataggio nel DB.codice:{ "name": "daisy", "surname": "duck", "telephone": "5656565", "email": "daisy@paperopoli.it", "user": { "id": 1, "username": "paolino", "password": "paperino" } }
La servlet, pertanto, dopo aver creato il JSON, invoca la seguente funzione, definita in una classe di servizio:
Non ottengo nessun errore, ma alla fine non succede nulla, nel senso che nessuna nuova tupla viene aggiunta alla tabella dei contatti. La stringa creata dalla servlet, poi passata alla classe di servizio, risulta corretto, tant'è che, copiata in Postman e usata come corpo di una richiesta POST, provoca una corretta aggiunta nel DB.codice:public void addContact(String toJSON) throws Exception { try { // open connection URL url = new URL("http://localhost:8081/Contact/saveContact"); HttpURLConnection con = (HttpURLConnection)url.openConnection(); // set connection parameters and connect con.setDoOutput(true); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/json"); con.connect(); // write data DataOutputStream output = new DataOutputStream(con.getOutputStream()); output.writeBytes(toJSON); //output.flush(); output.close(); } catch(Exception e) { System.out.println(e.getMessage()); } }
Secondo voi dov'è l'errore?
Grazie.

Rispondi quotando
