如何用Java编写一个非常基本的POST客户端

时间:2015-12-03 12:07:25

标签: java json http post

我必须用Java编写最基本的POST客户端。 它将一些参数发送到证书服务器。 这些参数应该是JSON编码的

我有附加代码,如何编写params JSON编码?

   String url = "http://x.x.x.x/CertService/revoke.php";

    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();

    //add reuqest header
    con.setRequestMethod("POST");
    con.setRequestProperty("User-Agent", "Mozilla/5.0");
    con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

    String urlParameters = "serialnumber=C02G8416DRJM&authtoken=abc&caauthority=def&reason=ghi";

    // Send post request
    con.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(urlParameters);
    wr.flush();
    wr.close();

    int responseCode = con.getResponseCode();

2 个答案:

答案 0 :(得分:1)

您可以将内容类型设置为application / json并发送json字符串吗?

<use>

答案 1 :(得分:0)

您在示例中发布的文字看起来像是app / x-www-form-urlencoded。要获取application / json编码,请将参数准备为映射,然后使用几个JSON编码库中的任何一个(例如Jackson)将其转换为JSON。

Map<String,String> params = new HashMap<>();
params.put("serialnumber", "C02G8416DRJM");
params.put("authtoken", "abc");
...
ObjectMapper mapper = new ObjectMapper();
OutputStream os = con.getOutputStream();
mapper.writeValue(os, params);
os.flush();
os.close();
...