Java JSON Apache POST参数

时间:2015-08-19 06:38:06

标签: java json apache http post

所以我得到了这段代码:

HttpClient httpClient = new DefaultHttpClient();
    try {
        HttpPost request = new HttpPost("url");
        StringEntity params = new StringEntity("stuff");
        request.addHeader("content-type", "application/json");
        //request.addHeader("Accept","application/json");
        request.setEntity(params);
        HttpResponse response = httpClient.execute(request);

        //stuff
    } catch (Exception ex) {
        //stuff
    } finally {
        httpClient.getConnectionManager().shutdown();
    }

我需要创建一个POST请求,我可以使用curl -X POST / groups /:group_id / members / add等,但我不知道如何将/ groups / param添加到我的代码中。我不太熟悉如何做到这一点,所以任何建议将不胜感激。谢谢!

编辑1 :(已解决) 已经使用了建议的代码,但是如果可能的话,希望对字符串中使用的变量有一些帮助,同时保持有效的JSON格式。

编辑2: 使用该方法,您是否可以显示如何将多个用户添加到StringEntity的示例?就像user1是" User1"并有电子邮件" Email1"而user2有" User2"和" Email2"等

2 个答案:

答案 0 :(得分:0)

使用您拥有的婴儿车创建一个url字符串,并将其作为参数传递给HttpPost()

    DefaultHttpClient httpClient = new DefaultHttpClient();
    String groupId = "groupId1";
     String URL = "http://localhost:8080/"+groupId+"/members/add"
    HttpPost postRequest = new HttpPost(
           URL );

    StringEntity input = new StringEntity("{\"name\":matt,\"from\":\"stackovefflow\"}");
    input.setContentType("application/json");
    postRequest.setEntity(input);

    HttpResponse response = httpClient.execute(postRequest);

<强>已更新

StringEntity的输入是一个你可以以任何方式操作的字符串。

您可以定义类似

的方法
private createStringEntity(String name, String email){
            return new StringEntity("{\"name\":\""+name+"\",\"email\":\""+email+"\"}");
        }

答案 1 :(得分:0)

“/ groups / ...”部分不是参数,而是网址的一小部分。我不认为这会起作用,因为“url”只是一个字符串,将其更改为:

 HttpPost request = new HttpPost("http://stackoverflow.com/groups/[ID]/members/add");