Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 正在分析POST查询中接收的字符串参数_Java_Parsing_Jersey_Jax Rs - Fatal编程技术网

Java 正在分析POST查询中接收的字符串参数

Java 正在分析POST查询中接收的字符串参数,java,parsing,jersey,jax-rs,Java,Parsing,Jersey,Jax Rs,我运行了一个非常简单的RESTWeb服务,在post查询中接收字符串参数,处理它们并发送回字符串响应。为了从字符串中解析参数 param1=testData1&param2=testData2& 我正在使用String.split(),如下所示: @POST @Produces(MediaType.TEXT_PLAIN) public String post(String str) { String[] parts = str.split("&"); Stri

我运行了一个非常简单的RESTWeb服务,在post查询中接收字符串参数,处理它们并发送回字符串响应。为了从字符串中解析参数

param1=testData1&param2=testData2& 
我正在使用
String.split()
,如下所示:

@POST
@Produces(MediaType.TEXT_PLAIN)
public String post(String str) {
  String[] parts = str.split("&");
  String part1 = parts[0]; // param1=testData1
  String part2 = parts[1]; // param2=testData2
  ......do something on these values and return String....
  return str;
}
要获取参数值,我必须再次拆分。。。。。
有人能推荐一个更干净、更优雅的解决方案来获得这些参数值吗?

假设其形式参数,一种适用于Jersey 1.x或Jersey 2.x的方法是注入
多值映射

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String post(MultivaluedMap<String, String> form) {
    StringBuilder builder = new StringBuilder();
    for (Map.Entry<String, List<String>> params : form.entrySet()) {
        for (String key: params.getValue()) {
            builder.append("key: ").append(params.getKey()).append("; ")
                .append("value: ").append(params.getValue().get(0)).append("\n");
        }
    }
    return builder.toString();
}
对于Jersey 2.x,您将使用
@BeanParam

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@BeanParam Bean bean) {

}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@InjectParam Bean bean) {

}
对于Jersey 1.x,您将使用
@InjectParam

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@BeanParam Bean bean) {

}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@InjectParam Bean bean) {

}
注意,bean注入也将适用于所有其他
@XxxParam
,而不仅仅是
@FormParam
,例如
@QueryParam
@PathParam
。你可以混合搭配

或者,如果您提前知道名称,如果您不需要bean,您可以简单地在方法签名中声明所有表单参数

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@FormParam("key1") String value1,
                     @FormParam("key2") String value2) {

}

假设其形式参数,对于Jersey 1.x或Jersey 2.x有效的一种方法是注入
MultivaluedMap

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String post(MultivaluedMap<String, String> form) {
    StringBuilder builder = new StringBuilder();
    for (Map.Entry<String, List<String>> params : form.entrySet()) {
        for (String key: params.getValue()) {
            builder.append("key: ").append(params.getKey()).append("; ")
                .append("value: ").append(params.getValue().get(0)).append("\n");
        }
    }
    return builder.toString();
}
对于Jersey 2.x,您将使用
@BeanParam

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@BeanParam Bean bean) {

}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@InjectParam Bean bean) {

}
对于Jersey 1.x,您将使用
@InjectParam

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@BeanParam Bean bean) {

}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@InjectParam Bean bean) {

}
注意,bean注入也将适用于所有其他
@XxxParam
,而不仅仅是
@FormParam
,例如
@QueryParam
@PathParam
。你可以混合搭配

或者,如果您提前知道名称,如果您不需要bean,您可以简单地在方法签名中声明所有表单参数

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@FormParam("key1") String value1,
                     @FormParam("key2") String value2) {

}

假设其形式参数,对于Jersey 1.x或Jersey 2.x有效的一种方法是注入
MultivaluedMap

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String post(MultivaluedMap<String, String> form) {
    StringBuilder builder = new StringBuilder();
    for (Map.Entry<String, List<String>> params : form.entrySet()) {
        for (String key: params.getValue()) {
            builder.append("key: ").append(params.getKey()).append("; ")
                .append("value: ").append(params.getValue().get(0)).append("\n");
        }
    }
    return builder.toString();
}
对于Jersey 2.x,您将使用
@BeanParam

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@BeanParam Bean bean) {

}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@InjectParam Bean bean) {

}
对于Jersey 1.x,您将使用
@InjectParam

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@BeanParam Bean bean) {

}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@InjectParam Bean bean) {

}
注意,bean注入也将适用于所有其他
@XxxParam
,而不仅仅是
@FormParam
,例如
@QueryParam
@PathParam
。你可以混合搭配

或者,如果您提前知道名称,如果您不需要bean,您可以简单地在方法签名中声明所有表单参数

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@FormParam("key1") String value1,
                     @FormParam("key2") String value2) {

}

假设其形式参数,对于Jersey 1.x或Jersey 2.x有效的一种方法是注入
MultivaluedMap

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String post(MultivaluedMap<String, String> form) {
    StringBuilder builder = new StringBuilder();
    for (Map.Entry<String, List<String>> params : form.entrySet()) {
        for (String key: params.getValue()) {
            builder.append("key: ").append(params.getKey()).append("; ")
                .append("value: ").append(params.getValue().get(0)).append("\n");
        }
    }
    return builder.toString();
}
对于Jersey 2.x,您将使用
@BeanParam

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@BeanParam Bean bean) {

}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@InjectParam Bean bean) {

}
对于Jersey 1.x,您将使用
@InjectParam

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@BeanParam Bean bean) {

}
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@InjectParam Bean bean) {

}
注意,bean注入也将适用于所有其他
@XxxParam
,而不仅仅是
@FormParam
,例如
@QueryParam
@PathParam
。你可以混合搭配

或者,如果您提前知道名称,如果您不需要bean,您可以简单地在方法签名中声明所有表单参数

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@FormParam("key1") String value1,
                     @FormParam("key2") String value2) {

}

非常感谢,肯定是一个全面的指南…但是我需要一些时间来吸收,在我将其标记为答案之前非常感谢,肯定是一个全面的指南…但是我需要一些时间来吸收,在我将其标记为答案之前非常感谢,当然是一个全面的指南…但我需要一些时间来吸收,在我将其标记为答案之前非常感谢,当然是一个全面的指南…但我需要一些时间来吸收,在我将其标记为答案之前