【问题标题】:Call POST method in RESTFul Web service在 RESTFul Web 服务中调用 POST 方法
【发布时间】:2010-12-21 14:12:35
【问题描述】:

我想在 java 中创建一个示例 RESTful Web 服务,它涉及所有四个 CRUD 操作,我将它部署在 tomcat 中。我使用 JAX-RS (Jersey) 库在 java 中实现它。到目前为止,我可以调用 GET 方法来检索记录列表并显示它。但我不知道如何调用 POST、PUT 和 DELETE 方法。谁能告诉如何调用这些方法?

【问题讨论】:

  • 您需要知道如何让客户端调用它们,或者如何在服务器端实现 POST/PUT/DELETE 处理程序?
  • 感谢朋友的回复。我已经编写了服务器端代码来实现 POST/PUT/DELETE 操作。例如 POST 方法的代码是 "@POST @Produces(MediaType.TEXT_HTML) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public void newContact( @FormParam("id") String id, @FormParam("name") String name, @Context HttpServletResponse servletResponse ) 抛出 IOException { }"。但是我想知道如何调用这个方法。

标签: java rest post


【解决方案1】:

试一试,您可以很容易地在服务器端提取键/值对:

ClientConfig config = new DefaultClientConfig();
com.sun.jersey.api.client.Client client = com.sun.jersey.api.client.Client.create(config);

MultiValueMap formData = new MultiValueMapImpl();
formData.add("key", "value");

WebResource resource = client.resource("http://path/to/resource");
ClientResponse response = resource.type("application/x-www-form-urlencoded").post(ClientResponse.class, formData);

【讨论】:

  • 谢谢。它为我工作。我还有一个疑问。有没有其他方法可以调用这些方法,比如在浏览器本身中直接修改url(在url中传递参数)?
  • 我相信,不要将它们放在 URL 中,这总是会导致 GET。您必须使用 javascript 并执行 POST 或任何其他方式,或者构建一个表单以使用 method="post" 填写并点击提交按钮。
  • 非常感谢 MStodd 的快速响应。我现在被清除了。
  • 你好,Mstodd。我还有一个疑问。我有 PUT 方法或 POST 方法,它使用 json 作为 REST Web 服务中的媒体类型。我可以知道如何从客户端调用这些方法吗?我们如何将该 json 作为输入传递给那些 PUT 和 POST 方法。如果我们想消费xml,那么我们正在使用JAXBElement.Similarly消费json,怎么办?
  • 嗯,作为post调用的第二个参数,你可以传入任何你想要的Object。不是专家,您可能只是构建您的 XML 或 JSON 并将其作为第二个参数作为字符串传递。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 2011-07-11
  • 1970-01-01
  • 2016-02-18
  • 1970-01-01
相关资源
最近更新 更多