java.net.HttpURLConnection 发送http body post json/xml数据的坑

如下是简单的写法:

       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() 取不到内容

猜你喜欢

转载自hallywang.iteye.com/blog/2376277
今日推荐