相关疑难解决方法(0)

查询字符串的最大可能长度是多少?

它依赖于浏览器吗?另外,不同的Web堆栈对于从请求中获取的数据量有不同的限制吗?

browser max query-string

523
推荐指数
2
解决办法
31万
查看次数

Jersey客户端:如何将列表添加为查询参数

我正在为具有List作为查询参数的GET服务创建Jersey客户端.根据文档,可以将List作为查询参数(此信息也在@QueryParam javadoc中),检查出来:

通常,方法参数的Java类型可以:

  1. 是一种原始的类型;
  2. 有一个接受单个String参数的构造函数;
  3. 有一个名为valueOf或fromString的静态方法接受单个String参数(例如,参见Integer.valueOf(String)和java.util.UUID.fromString(String)); 要么
  4. Be List,Set或SortedSet,其中T满足上面的2或3.生成的集合是只读的.

有时参数可能包含同一名称的多个值.如果是这种情况,则可以使用4)中的类型来获得所有值.

但是,我无法弄清楚如何使用Jersey客户端添加List查询参数.

我理解替代解决方案是:

  1. 使用POST而不是GET;
  2. 将List转换为JSON字符串并将其传递给服务.

第一个不好,因为服务的正确HTTP动词是GET.这是一种数据检索操作.

如果你不能帮助我,第二个将是我的选择.:)

我也正在开发这项服务,所以我可以根据需要进行更改.

谢谢!

更新

客户端代码(使用json)

Client client = Client.create();

WebResource webResource = client.resource(uri.toString());

SearchWrapper sw = new SearchWrapper(termo, pagina, ordenacao, hits, SEARCH_VIEW, navegadores);

MultivaluedMap<String, String> params = new MultivaluedMapImpl();
params.add("user", user.toUpperCase()); 
params.add("searchWrapperAsJSON", (new Gson()).toJson(sw));

ClientResponse clientResponse = webResource .path("/listar")
                                            .queryParams(params)
                                            .header(HttpHeaders.AUTHORIZATION, AuthenticationHelper.getBasicAuthHeader())
                                            .get(ClientResponse.class);

SearchResultWrapper busca = clientResponse.getEntity(new GenericType<SearchResultWrapper>() {});
Run Code Online (Sandbox Code Playgroud)

java rest jersey

75
推荐指数
4
解决办法
21万
查看次数

标签 统计

browser ×1

java ×1

jersey ×1

max ×1

query-string ×1

rest ×1