如何使用JSON对象作为数据进行HTTP POST?

时间:2014-10-12 16:43:45

标签: java json post

任何人都可以向我推荐一个简单的资源,解释如何在Java中使用JSON对象作为数据进行HTTP POST吗?我希望能够在不使用Apache HTTP Client的情况下完成此操作。

以下是我迄今为止所做的工作。我试图弄清楚如何用JSON修改它。

 public class HTTPPostRequestWithSocket {

     public void sendRequest(){

         try {
            String params = URLEncoder.encode("param1", "UTF-8")
                + "=" + URLEncoder.encode("value1", "UTF-8");
            params += "&" + URLEncoder.encode("param2", "UTF-8")
                + "=" + URLEncoder.encode("value2", "UTF-8");

            String hostname = "nameofthewebsite.com";
            int port = 80;

           InetAddress addr = InetAddress.getByName(hostname);
           Socket socket = new Socket(addr, port);
           String path = "/nameofapp";

        // Send headers
        BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
        wr.write("POST "+path+" HTTP/1.0rn");
        wr.write("Content-Length: "+params.length()+"rn");
        wr.write("Content-Type: application/x-www-form-urlencodedrn");
        wr.write("rn");

        // Send parameters
        wr.write(params);
        wr.flush();

        // Get response
        BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line;

        while ((line = rd.readLine()) != null) {
            System.out.println(line);
            }

        wr.close();
        rd.close();
        socket.close();//Should this be closed at this point?
        }catch (Exception e) {e.printStackTrace();}
    }

}

1 个答案:

答案 0 :(得分:0)

JSON只是一个字符串。

只需将json对象添加为帖子值。

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("jsonData", new JSONObject(json)));//json
params.add(new BasicNameValuePair("param1", "somevalue"));//regular post value