Java 传递到URI的参数无效

Java 传递到URI的参数无效,java,rest,jakarta-ee,encoding,jax-rs,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);

注意!你不必紧张地做出决定,只要告诉我:我应该朝哪个方向想

因此,我们有一个非常简单的服务:

    @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();
    }
localhost:8080/application/rest/catalog/subscriber/search?data={
"name":"bbb",
"street":"eee",
"contractNumber":5
}
按照这个想法,JSON应该由方法
fromString()
自动解析到SubscriberSearchFormData类的对象。我们将继续与他合作。但当我调用服务时:

    @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();
    }
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(“我们在这里”)甚至没有被调用。它甚至在调用
fromString()之前就崩溃了


第二天我就开始挖了,无法解决问题。

您的URI似乎无法正确解析,因为它包含非法字符;这里讨论了这个问题:

这也可能有用:


您的问题还可以链接到:

您的URI似乎无法正确解析,因为它包含非法字符;这里讨论了这个问题:

这也可能有用:


您的问题也可以链接到:

,但它是否能够调用此
System.out.println(数据)内部
getSubscriber()
?@YoungMillie当然。为什么不呢?但是它能够调用这个
System.out.println(数据)内部
getSubscriber()
?@YoungMillie当然。为什么不呢?