java - 传递到 URI 的参数无效

标签 java rest jakarta-ee encoding jax-rs

注意!你可以不做决定,只要告诉我:我应该朝哪个方向思考!

所以,我们有一个非常简单的服务:

    @GET
    @Path("/search")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response getSubscriber(@QueryParam("data") SubscriberSearchFormData data){   
        System.out.println(data);
        List <SubscrEntity> results = null  //list of results
        return Response.ok(results).build();
    }

使用的类SubscriberSearchFormData:

public class SubscriberSearchFormData {
    private String name;
    private String street;
    private Integer contractNumber;

    public static SubscriberSearchFormData fromString(String jsonRepresentation) throws Exception { 
          System.out.println("WE ARE HERE");
          ObjectMapper mapper = new ObjectMapper(); // Jackson's JSON marshaller
          SubscriberSearchFormData obj = null;
          try {
           obj = mapper.readValue(decoded, SubscriberSearchFormData.class);
          } catch (IOException e) {
           throw new Exception("Wrong JSON parameters!");
          }
          return obj;
    }

    //all getters and setters
}

按照想法,JSON应该通过方法fromString()自动解析到SubscriberSearchFormData类的对象。我们将继续与他合作。但是当我调用该服务时:

localhost:8080/application/rest/catalog/subscriber/search?data={
"name":"bbb",
"street":"eee",
"contractNumber":5
}

一切都因错误而失败:

11:24:04,050 WARN  [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-3) RESTEASY002130:
Failed to parse request.: javax.ws.rs.core.UriBuilderException: RESTEASY003330: 
Failed to create URI: http://localhost:8080/application/rest/catalog/subscriber/search?data={%20%22name%22:%22bbb%22,%20%22street%22:%22eee%22,%20%22contractNumber%22:%225%22}

同时,System.out.println ("WE ARE HERE"); 甚至没有被调用。即使在调用 fromString ();

之前它也会崩溃

我第二天就挖了这个问题,但无法解决。

最佳答案

您的 URI 似乎无法正确解析,因为它包含非法字符;这个问题在这里得到解决: IllegalArgumentException caught when parsing URL with JSON String

这也可能有用:http://docs.jboss.org/resteasy/docs/3.0.7.Final/userguide/html_single/index.html#_QueryParam

您的问题也可能链接到:https://issues.jboss.org/browse/RESTEASY-1718

关于java - 传递到 URI 的参数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48681721/

相关文章:

security - Paypal 和微软 WebAPI : best security approach

java - getResource ("xmlfile.xml")抛出 java.lang.NullPointerException

java - 来自 Java EE 应用程序服务器的数据流

java - 这与方法之间的区别

java - Android 将图片发布到 Facebook 墙

java - MySQL 更新有效,但在PreparedStatement 中使用时无效

java - 为什么不同组织的javax.annotation不同

rest - 在httpservlet请求中获取路径参数的任何方法

java - 是否有用于创建 XHTML 文档的 Java API?

java - 使用java home在maven中编译错误