REST Jersey客户端

时间:2014-04-15 15:55:41

标签: rest jersey

我正在尝试创建一个RESTful Web服务,我无法让删除工作,我不知道问题出在哪里。我认为问题出在客户端项目的某个地方,但它也可能位于服务器项目的资源类中。

我有一个学生dao类使用这种方法,我不认为这是一个问题,因为它适用于其他项目。

    public void deleteStudent(String id){
    try {
        PreparedStatement pstmt;
        pstmt = con.prepareStatement("DELETE FROM APP.STUDENT WHERE ID = ?");
        pstmt.setString(1, id);
        pstmt.executeUpdate();
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
}

我有一个StudentResource类,我从其中包含此代码的模式创建RESTful资源

    @DELETE
       public String delete(String id) {
       StudentServiceDAO studentsDAO = new StudentServiceDAO();
       StudentServiceEntry studentsEntry = studentsDAO.getStudent(id);
       studentsDAO.deleteStudent(id);
       return "<studentDeleted id = '"+id+"' />";
    }

然后我创建了一个java项目并使用这种方法创建了一个名为OneStudent的RESTful Java客户端,我想这可能就是问题所在

    public String delete(String id) throws ClientErrorException {
       webTarget.request().delete();
       WebTarget resource = webTarget;
       return   resource.request(javax.ws.rs.core.MediaType.APPLICATION_XML).get(String.class);
}

我正试图从这个主类中测试它

    OneStudent client = new OneStudent("A555222");
    Object response = client.delete("A555222");
    client.close();

1 个答案:

答案 0 :(得分:1)

是的,您的客户端代码有点偏,但我也认为最好将id移动到这样的路径参数:

@DELETE
@Path("/{id}")
public String delete(@PathParam("id") String id) {
    StudentServiceDAO studentsDAO = new StudentServiceDAO();
    studentsDAO.deleteStudent(id);
    return "<studentDeleted id = '"+id+"' />";
}

那么你的客户:

public String delete(String id) throws ClientErrorException {
    return webTarget.path(id)
                    .request(MediaType.APPLICATION_XML)
                    .delete(String.class);
}

此外,您不应该在资源中手动构建XML,但这是一个不同的问题......