是否可以从REST请求获取POST参数?

时间:2014-09-03 15:49:49

标签: java rest post jax-rs

是否可以从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吗?

4 个答案:

答案 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);