Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从html表单操作属性调用rest web服务_Java_Html_Forms_Rest - Fatal编程技术网

Java 无法从html表单操作属性调用rest web服务

Java 无法从html表单操作属性调用rest web服务,java,html,forms,rest,Java,Html,Forms,Rest,我试图从html表单调用用java编写的RESTWeb服务 我的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("/h

我试图从html表单调用用java编写的RESTWeb服务

我的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> ";
      }

}
import javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.products;
导入javax.ws.rs.core.MediaType;
@路径(“/hello”)
公共课你好{
@职位
@路径(“/hello”)
@使用(MediaType.TEXT\uHTML)
@生成(MediaType.TEXT\u HTML)
公共字符串hello(@FormParam(“用户名”)字符串名称1){
返回“+”+“Hello Jersey”+“
+“+”来自帮助台的问候“+”+”;
}
}
我的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。 我已经引用了一些例子

谁能告诉我怎么做


谢谢

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

  @Path("/hello{name}")
我不认为您可以连接两个路径参数,我假设这是一个输入错误,并期望此映射为:

  @Path("/hello/{name}")
第二个问题是html代码。您试图以
表单
param的形式发送名称,这对
POST
请求有效,而对GET请求无效
GET
request希望URL或路径中的参数与REST服务代码中的参数相同

现在您有两种选择来更正代码。将REST服务代码方法从
GET
更改为
POST
。或者,您可以从HTML中将名称作为path param发送,以正确命中服务并获取参数


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

我发现代码中存在多个问题。第一个是放置REST服务路径映射的方式:

  @Path("/hello{name}")
我不认为您可以连接两个路径参数,我假设这是一个输入错误,并期望此映射为:

  @Path("/hello/{name}")
第二个问题是html代码。您试图以
表单
param的形式发送名称,这对
POST
请求有效,而对GET请求无效
GET
request希望URL或路径中的参数与REST服务代码中的参数相同

现在您有两种选择来更正代码。将REST服务代码方法从
GET
更改为
POST
。或者,您可以从HTML中将名称作为path param发送,以正确命中服务并获取参数


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

将文本框的名称更改为name。 还要更改方法“@path(“/hello{name}”)”上方的路径

请尝试在html中使用此路径和url。“@path(“/test”)”

URL:/helpdesk/rest/hello/test

你好-是根类查找器吗

测试-是根类中的方法查找器


有关代码中路径参数和表单参数之间的差异,请参阅链接“”,将文本框的名称更改为name。 还要更改方法“@path(“/hello{name}”)”上方的路径

请尝试在html中使用此路径和url。“@path(“/test”)”

URL:/helpdesk/rest/hello/test

你好-是根类查找器吗

测试-是根类中的方法查找器



请参阅链接“”以了解路径参数和表单参数之间的差异

是否可以尝试将Username:更改为Username:并查看是否正确works@Satya,试过了。但没有变化。实际上,点击提交按钮,浏览器中的url没有变化,比如…/first.jsp?name=xxx某物您的应用服务器运行正常吗?是的,我使用的是tomcat 7。当我作为独立应用程序运行web服务时,没有参数,例如(删除@param和all)、xx.xx.xx:8080/helpdesk/rest/hello,然后我会以html页面的形式得到回复,我在web服务代码中返回了该页面,当您的表单未提交时将其更改为可以尝试将Username:更改为Username:并查看是否works@Satya,我试过了。但没有变化。实际上,点击提交按钮,浏览器中的url没有变化,比如…/first.jsp?name=xxx某物您的应用服务器运行正常吗?是的,我使用的是tomcat 7。当我作为独立应用程序运行web服务时,没有参数,例如(删除@param和all)、xx.xx.xx:8080/helpdesk/rest/hello,然后我会得到html页面的回复,我在web服务代码中返回了该页面,因为您的表单没有提交。谢谢您的回答,我会按照您的建议对代码进行更改。但我得到错误的“方法不允许”,我已经编辑了更新的代码。我认为只有在参数传递时才会出错。萤火虫也不是helping@Optimus尝试将@Path(“/hello/{name}”)替换为@Path(“/hello”),因为您无法将名称作为路径参数发送到POST请求。此外,您还需要在方法签名中将param的名称更改为“username”,即公共字符串hello(@FormParam(“username”)。我收到相同的错误,请求的资源不允许使用指定的HTTP方法。我已编辑更新的code@Optimus删除类顶部的路径映射,即@path(“/hello”)public class HelloThanks为您解答,我按照您的建议对代码进行了更改。但是我得到了“method not allowed”的错误。我已经编辑了更新的代码。我认为仅在参数传递方面出现了问题。Firebug也没有helping@Optimus尝试将@Path(“/hello/{name}”)替换为@Path(“/hello”)因为您无法将名称作为路径参数发送到POST请求。您还需要将方法签名中的参数名称更改为“username”,即公共字符串hello(@FormParam(“username”)我收到相同的错误,请求的资源不允许使用指定的HTTP方法。我已编辑更新的code@Optimus删除类顶部的路径映射,即@path(“/hell