Quote Originariamente inviata da andbin Visualizza il messaggio
Hai verificato lo status code restituito? (direi di no).

Comunque:
a) writeBytes NON è il più appropriato per inviare una stringa (che in questo caso dovrebbe essere in UTF-8). Perché se leggessi la documentazione di writeBytes vedresti che letteralmente "butta via" il byte alto di ogni char.

b) Visto che saveContact ha una response (che sarà poi in JSON), allora passa nella request anche l'header Accept a "application/json"
Ciao.
Grazie per la risposta.
È successa una cosa strana: ho modificato il codice precedente per attendere anche una risposta, oltre ad inviare la richiesta POST:
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();
            byte[] postData = toJSON.getBytes(StandardCharsets.UTF_8);
            
            // set connection parameters and connect
            con.setDoOutput(true);
            con.setDoInput(true);
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/json");
            con.setRequestProperty("charset", "utf-8");
            con.setRequestProperty("Content-Length", Integer.toString(postData.length));
            //con.setUseCaches(false);
            con.connect();
            
            // transform Contact into JSON format
            //String toJSON = JSON.toJSONString(contact);
            System.out.println(toJSON);
            
            // write data
            DataOutputStream output = new DataOutputStream(con.getOutputStream());
            //output.writeBytes(toJSON);
            output.write(postData);
            //output.flush();
            //output.close();
            
            int responseCode = con.getResponseCode();
    
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();


            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();


            //print result
            System.out.println("Response code: " + responseCode);
            System.out.println(response.toString());
            
            output.close();
        }
        
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
Ora riesco a salvare nel DB i nuovi contatti.
Perdona la domanda da neofita: il fatto di non attendere la risposta può causare problemi?

Grazie dell'aiuto.