我必须在返回text/xml
的服务上调用GET。
端点是这样的:
http://service.com/rest.asp?param1=34¶m2=88¶m3=foo
当我直接在浏览器(或某些UI工具)上点击此网址时,一切都很好。我收到了回复。
现在,我正在尝试使用CXF WebClient
来使用如下代码获取结果:
String path = "rest.asp?param1=34¶m2=88¶m3=foo";
webClient.path(path)
.type(MediaType.APPLICATION_JSON)
.accept(MediaType.TEXT_XML_TYPE)
.get(Response.class);
我正在调试代码,发现发送的请求是url编码的,如下所示:
http://service.com/rest.asp%3Fparam1=34%26param2=88%26param3=foo
现在,问题是服务器似乎不理解带有编码内容的这个请求。它会抛出404.在浏览器上点击此编码的URL也会产生404。
我应该怎样做才能成功获得响应(或者不让WebClient对网址进行编码)?
答案 0 :(得分: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);
答案 1 :(得分:0)
您需要对网址进行编码。你可以使用URLEncoder类来完成它,如下所示:
请替换你的行
String path = "rest.asp?param1=34¶m2=88¶m3=foo";
与
String path = URLEncoder.encode("rest.asp?param1=34¶m2=88¶m3=foo");