Java 无法从html表单操作属性调用rest web服务
我试图从html表单调用用java编写的RESTWeb服务 我的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
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