我正在使用Jersey API构建REST Web服务,并且在将参数传递给PUT方法时遇到了问题。方法是这样的:
@PUT
@Consumes("text/html")
public void putHtml (String content) {
System.out.println("Content"+content);
}
我用以下方法调用它:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function passName()
{
xmlHttp=new XMLHttpRequest();
var url = "/RestWebApp/resources/greeting";
xmlHttp.open("PUT",url,false);
xmlHttp.send();
}
</script>
<title>REST Testing</title>
</head>
<body>
Put name:<input type="text" name="name"/>
<br />
<input type="button" value="Put" onclick="passName()"/>
</body>
</html>
PUT方法被调用,因为我在服务器控制台(Glassfish)中打印了“内容”,但似乎没有读取参数。是否有@statement或我应该添加到参数中的东西?
谢谢! Krt_Malta
答案 0 :(得分:1)
您没有在客户端代码中设置请求正文。
您需要发送一些内容,例如
xmlHttp.Send("here is my content")
但是,您已声明接收端点接受“text / html”。我会改为接受“text / plain”。或者,如果您确实想要接收多个值,则可以接受“application / x-www-urlencoded-form”。但是,您需要在javascript中自行格式化。 Web浏览器不知道如何PUT表单。他们只能张贴表格。