是否可以从REST请求中获取POST参数?
我尝试了以下但没有成功:
MultivaluedMap<String, String> params = uriInfo.getQueryParameters();
log.info("Params Size: "+params.size());
Iterator<String> it = params.keySet().iterator();
String theKey = null;
while(it.hasNext()){
theKey = it.next();
log.info("Here is a Key: "+theKey);
}
这是我的方法签名:
@POST
@Produces("application/pdf")
@Path("/hello")
public Response producePDF(@FormParam("filename")String fileName, @Context UriInfo uriInfo)
日志显示0代表&#34;参数大小:&#34;
我可以只使用GET吗?
答案 0 :(得分:2)
@Roman Vottner你的回答是这样的。我需要注入MultivaluedMap而不是在方法调用时构造。
代码:
@POST
@Produces("application/pdf")
@Path("/hello")
@Consumes("application/x-www-form-urlencoded")
public Response producePDF(MultivaluedMap<String, String> params)
Iterator<String> it = params.keySet().iterator();
String theKey = null;
while(it.hasNext()){
theKey = it.next();
log.info("Here is a Key: "+theKey);
if(theKey.equals("filename")){
fileName = params.getFirst(theKey);
System.out.println("Key: "+theKey);
}
}
我现在可以获取参数了!
答案 1 :(得分:0)
如果通过“POST参数”表示“查询参数”,则需要uriInfo.getQueryParameters()
。如果没有,你需要解释你的意思。
答案 2 :(得分:0)
如果您使用的是HTML表单,可以尝试下一个:
<强> HTML 强>:
<form action="rest/resource/hello" method="post" target="_blank">
<fieldset>
<legend>Download PDF</legend>
<label>Filename: <input type="text" name="filename" required></label>
<button>Submit</button>
</fieldset>
</form>
<强>爪哇强>:
@POST
@Path("/hello")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces("application/pdf")
public Response producePDF(@FormParam("filename") String fileName) {
// Do something
...
}
答案 3 :(得分:0)
对于Json
@POST
@Consumes("application/json")
public void fRestEndPoint(Map<String, String> params) throws IOException, JSONException {
log.info("Received a f rest call ");
String output = params.toString();
log.info(output);