它依赖于浏览器吗?另外,不同的Web堆栈对于从请求中获取的数据量有不同的限制吗?
我正在为具有List作为查询参数的GET服务创建Jersey客户端.根据文档,可以将List作为查询参数(此信息也在@QueryParam javadoc中),检查出来:
通常,方法参数的Java类型可以:
- 是一种原始的类型;
- 有一个接受单个String参数的构造函数;
- 有一个名为valueOf或fromString的静态方法接受单个String参数(例如,参见Integer.valueOf(String)和java.util.UUID.fromString(String)); 要么
- Be List,Set或SortedSet,其中T满足上面的2或3.生成的集合是只读的.
有时参数可能包含同一名称的多个值.如果是这种情况,则可以使用4)中的类型来获得所有值.
但是,我无法弄清楚如何使用Jersey客户端添加List查询参数.
我理解替代解决方案是:
第一个不好,因为服务的正确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)