2014-04-04 53 views
0

我有以下的签名球衣Web服务:如何将对象发布到新泽西REST服务

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

我想要使用org.apache.http.client在我的Java代码POST请求。 HttpClient并传递一个Student对象。我怎么能这样做呢?我发现大量的例子将一个字符串作为namedvaluepair发布。但是如何发布自定义对象还不太清楚。建议?提前致谢。

回答

0

我用这个来测试dmy,身体是JSON格式的。所以请将您的Student对象转换为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();  
}