I'm trying to post some data from a Java client using sockets. It talks to localhost running php code, that simply spits out the post params sent to it.
Here is Java Client:
public static void main(String[] args) throws Exception { Socket socket = new Socket("localhost", 8888); String reqStr = "testString"; String urlParameters = URLEncoder.encode("myparam="+reqStr, "UTF-8"); System.out.println("Params: " + urlParameters); try { Writer out = new OutputStreamWriter(socket.getOutputStream(), "UTF-8"); out.write("POST /post3.php HTTP/1.1\r\n"); out.write("Host: localhost:8888\r\n"); out.write("Content-Length: " + Integer.toString(urlParameters.getBytes().length) + "\r\n"); out.write("Content-Type: text/html\r\n\n"); out.write(urlParameters); out.write("\r\n"); out.flush(); InputStream inputstream = socket.getInputStream(); InputStreamReader inputstreamreader = new InputStreamReader(inputstream); BufferedReader bufferedreader = new BufferedReader(inputstreamreader); String string = null; while ((string = bufferedreader.readLine()) != null) { System.out.println("Received " + string); } } catch(Exception e) { e.printStackTrace(); } finally { socket.close(); } } This is how post3.php looks like:
<?php $post = $_REQUEST; echo print_r($post, true); ?> I expect to see an array (myparams => "testString") as the response. But its not passing post args to server. Here is output:
Received HTTP/1.1 200 OK Received Date: Thu, 25 Aug 2011 20:25:56 GMT Received Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8r DAV/2 PHP/5.3.6 Received X-Powered-By: PHP/5.3.6 Received Content-Length: 10 Received Content-Type: text/html Received Received Array Received ( Received ) Just a FYI, this setup works for GET requests.
Any idea whats going on here?