如下是简单的写法:
URL url = new URL("http://127.0.0.1:8080/json/"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(30 * 1000); // 缓存的最长时间 conn.setDoInput(true);// 允许输入 conn.setDoOutput(true);// 允许输出 conn.setUseCaches(false); // 不允许使用缓存 conn.setRequestMethod("POST"); conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("Charsert", "UTF-8"); conn.setRequestProperty("Content-Type","application/json" ); //必须设置
DataOutputStream outputStreamWriter = new DataOutputStream(conn.getOutputStream()); outputStreamWriter.write("{1:1}".getBytes()); outputStreamWriter.flush(); outputStreamWriter.close(); System.out.println("respcode="+conn.getResponseCode()); conn.disconnect();
注意这行:conn.setRequestProperty("Content-Type","application/json" );
这里的content-type 必须要设置为 application/json或text/xml 甚至设置为空都可以.
因为如果不写,默认是application/x-www-form-urlencoded,发送出去的json或xml数据就会变成一个参数名
接收端用 java的 request.getInputStream() 取不到内容.