Introduction
Earlier on we already saw how to read from a Socket. This example shows how to do a HTTP POST. The HTTP post can take more data. Such as binary data.
This example can therefore be useful to post multiple documents to another program such as Apache Solr. Note that you also can do this with the UNIX / Linux cURL command
try { // Construct data String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); // Create a socket to the host String hostname = "hostname.com"; int port = 80; InetAddress addr = InetAddress.getByName(hostname); Socket socket = new Socket(addr, port); // Send header String path = "/servlet/SomeServlet"; BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8")); wr.write("POST "+path+" HTTP/1.0rn"); wr.write("Content-Length: "+data.length()+"rn"); wr.write("Content-Type: application/x-www-form-urlencodedrn"); wr.write("rn"); // Send data wr.write(data); wr.flush(); // Get response BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line; while ((line = rd.readLine()) != null) { // Process line... } wr.close(); rd.close(); } catch (Exception e) { }