7

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

端点是这样的:

http://service.com/rest.asp?param1=34&param2=88&param3=foo

当我直接在浏览器(或某些 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);

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

http://service.com/rest.asp%3Fparam1=34%26param2=88%26param3=foo

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

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

4

2 回答 2

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);
于 2013-02-08T11:13:31.427 回答
0

您将需要对您的 URL 进行编码。您可以使用 URLEncoder 类执行此操作,如下所示:

请更换您的线路

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

String path = URLEncoder.encode("rest.asp?param1=34&param2=88&param3=foo");
于 2013-02-08T11:12:22.600 回答