Java 如何将对象发布到Jersey Rest服务

Java 如何将对象发布到Jersey Rest服务,java,rest,jersey,Java,Rest,Jersey,我有一个具有以下签名的Jersey Web服务: @POST @Consumes(MediaType.APPLICATION_JSON) public Response save(Student a) {...} 我想使用org.apache.http.client.HttpClient在java代码中发出POST请求,并传递一个Student对象。我该怎么做呢?我发现了很多将字符串作为namedvaluepair发布的示例。但对于如何发布自定义对象还不是很清楚。建议?提前感谢。我用这个来测试

我有一个具有以下签名的Jersey Web服务:

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response save(Student a) {...}

我想使用org.apache.http.client.HttpClient在java代码中发出POST请求,并传递一个Student对象。我该怎么做呢?我发现了很多将字符串作为namedvaluepair发布的示例。但对于如何发布自定义对象还不是很清楚。建议?提前感谢。

我用这个来测试dmy,正文是JSON格式的。因此,将学生对象转换为JSON数据

public String post(String url, HashMap<String, String>params, String body) throws Exception {
    HttpPost postRequest = new HttpPost(url);

    for(String key : params.keySet()){
        postRequest.addHeader(key, params.get(key));
    }

    StringEntity input = new StringEntity(body);
    input.setContentType("application/json");
    postRequest.setEntity(input);

    HttpResponse response = (new DefaultHttpClient()).execute(postRequest);

    if (response.getStatusLine().getStatusCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                + response.getStatusLine().getStatusCode());
    }

    BufferedReader br = new BufferedReader(
            new InputStreamReader((response.getEntity().getContent())));

    String output;
    StringBuffer totalOutput = new StringBuffer();
    while ((output = br.readLine()) != null) {
        totalOutput.append(output);
    }
    return totalOutput.toString();    
}
publicstringpost(字符串url、HashMapparams、字符串正文)引发异常{
HttpPost postRequest=新的HttpPost(url);
for(字符串键:params.keySet()){
postRequest.addHeader(key,params.get(key));
}
StringEntity输入=新的StringEntity(主体);
setContentType(“应用程序/json”);
setEntity(输入);
HttpResponse response=(新的DefaultHttpClient()).execute(postRequest);
如果(response.getStatusLine().getStatusCode()!=200){
抛出新的RuntimeException(“失败:HTTP错误代码:”
+response.getStatusLine().getStatusCode());
}
BufferedReader br=新的BufferedReader(
新的InputStreamReader((response.getEntity().getContent());
字符串输出;
StringBuffer totalOutput=新的StringBuffer();
而((output=br.readLine())!=null){
totalOutput.append(输出);
}
返回totalOutput.toString();
}