Фактически возможно выполнить POST, используя только те классы, которые есть в JDK, но, как отмечали другие, вероятно, будет проще использовать такую библиотеку, как HttpClient.
В дополнение к HttpClient вы также можете посмотреть клиентские java-библиотеки, предоставляемые средами RESTful, такими как Restlet и Jersey. Хотя в первую очередь они предназначены для взаимодействия с веб-сервисами, они предлагают высокоуровневую абстракцию для GETing и POSTing практически ко всему.
Код НЕ проверен и даже не скомпилирован (возможно, не компилируется), но это своего рода сортировка, которую вы бы сделали, если бы захотели свернуть свой собственный:
URL url = new URL("http://hostname/foo.php");
URLConnection connection = url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
// ignoring possible encoding issues
byte[] body = "param=value¶m2=value2".getBytes();
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded" );
connection.setRequestProperty("Content-length", String.valueOf(body.length) );
// ignoring possible IOExceptions
OutputStream out = connection.getOutputStream();
out.write(body);
out.flush();
// use this to read back from server
InputStream in = connection.getInputStream();
Как видите, это довольно низкоуровневые вещи. Вот почему вы хотите использовать библиотеку.