繁体   English   中英

无法通过html表单操作属性调用其余Web服务

[英]Unable to call rest web service from html form action attribute

我试图从HTML形式调用用Java编写的其余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/引用了示例

有人可以告诉我该怎么做吗?

谢谢

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

  @Path("/hello{name}")

我不认为您可以串联两个路径参数,我认为这是一个错字,并且希望此映射为:

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

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

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

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

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

尝试使用此路径和html中的url。“ @ Path(” / test“)”

网址:/ helpdesk / rest / hello / test

你好-是根类查找器

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

请参阅链接“ http://www.mastertheboss.com/resteasy/resteasy-tutorial-part-two-web-parameters ”,以获取路径参数和形式参数之间的差异

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM