Попробуйте добавить
con.setDoInput (false);
перед записью в вывод.
P.S .: и вы также должны вызвать con.connect (), как говорит swanliu.
Обновление
Это то, что я придумал
private static final void sendPostRequest (final String urlAddress, String key, String value) throws Exception
{
URL url = new URL (urlAddress);
URLConnection con = url.openConnection ();
con.setDoOutput (true);
con.setDoInput (false);
PrintStream ps = new PrintStream (con.getOutputStream ());
ps.println (key + "=" + URLEncoder.encode (value, "UTF-8"));
ps.flush ();
con.connect ();
ps.close ();
}
Я проверил с помощью WireShark, что соединение TCP установлено и закрыто. Но не знаю, как проверить, что сервер получил запрос.
Если у вас есть быстрый способ проверить это, вы можете попробовать этот код.