调用在URL中具有查询参数的"REST"服务

TJ-*_*TJ- 7 java rest web-services cxf web-client

我必须在返回的服务上调用GET text/xml.

端点是这样的:

http://service.com/rest.asp?param1=34&param2=88&param3=foo
Run Code Online (Sandbox Code Playgroud)

当我直接在浏览器(或一些UI工具)上点击这个URL时,一切都很好.我收到回复.

现在,我试图使用CXF WebClient一段代码来获取结果,如下所示:

String path = "rest.asp?param1=34&param2=88&param3=foo";

webClient.path(path)
    .type(MediaType.APPLICATION_JSON)
    .accept(MediaType.TEXT_XML_TYPE)
    .get(Response.class);
Run Code Online (Sandbox Code Playgroud)

我正在调试代码,发现发送的请求是url编码的,看起来像这样:

http://service.com/rest.asp%3Fparam1=34%26param2=88%26param3=foo
Run Code Online (Sandbox Code Playgroud)

现在,问题是服务器似乎不理解带有编码内容的这个请求.它会抛出404.在浏览器上点击此编码的URL也会产生404.

我该怎么做才能成功获得响应(或者不让WebClient对url进行编码)?

And*_*dre 10

使用查询方法指定参数:

String path = "rest.asp";
webClient.path(path)
    .type(MediaType.APPLICATION_JSON)
    .accept(MediaType.TEXT_XML_TYPE)
    .query("param1","34")
    .query("param2","88")
    .query("param3","foo")
    .get(Response.class);
Run Code Online (Sandbox Code Playgroud)