1

我正在尝试从 html 表单调用用 java 编写的 rest web 服务

我的网络服务代码是

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class Hello {

      @POST
      @Path("/hello")
      @Consumes(MediaType.TEXT_HTML)
      @Produces(MediaType.TEXT_HTML)
      public String hello( @FormParam("username") String name1) {
  return "<html> " + "<title>" + "Hello Jersey" + "</title>"
            + "<body><h1>" + "Hello from helpdesk" + "</body></h1>" + "</html> ";
      }

}

我的html页面是

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action= "http://localhost:8080/helpdesk/rest/hello" method="POST">
        Username: <input type="text" name="username">
        <p>
        <input type="submit" value="Submit">
    </form>

</body>
</html>

在 html 表单中,我调用了 Web 服务 ../rest/hello。我从http://www.vogella.com/articles/REST/中引用了示例

谁能告诉我该怎么做?

谢谢

4

2 回答 2

1

我在您的代码中看到了多个问题。第一个是您放置 REST 服务路径映射的方式:

  @Path("/hello{name}")

我不认为你可以连接你的两个路径参数,我认为它是一个错字并期望这个映射是:

  @Path("/hello/{name}")

第二个问题是您的 html 代码。您正在尝试将名称作为FORM参数发送,这对POST请求有好处,而不适用于 GET 请求。GETrequest 期望 URL 或路径中的参数,因为您期望它在 REST 服务代码中。

现在您有两个选择来更正代码。将您的 REST 服务代码方法更改为POSTfrom GET。或者,您可以将名称作为路径参数从您的 HTML 发送,以正确访问您的服务并获取参数。

如果将方法更改为 POST,则可能必须将参数更改为FormParam而不是PathParam.

于 2013-07-23T04:58:47.887 回答
0

在您的代码中,将文本框的名称更改为名称。还要更改方法“@Path("/hello{name}")”上方的路径。

尝试在 html 中使用此路径和 url。"@Path("/test")"

网址:/helpdesk/rest/hello/test

你好 - 是根类查找器

test - 是根类中的方法查找器

有关路径参数和表单参数之间的区别,请参阅链接“ http://www.mastertheboss.com/resteasy/resteasy-tutorial-part-two-web-parameters ”

于 2013-07-23T05:00:52.840 回答