Apache Http UrlBuilder从URL中剥离API版本

时间:2016-09-09 11:54:40

标签: java spring apache-httpclient-4.x uribuilder

所有

我在配置中定义了我的基本网址

  

foobar.baseurl = https://api.foobar.com/v3/reporting/

这是作为我的Spring bean

的构造函数参数传递的
<bean id="foobarUriBuilder" class="org.apache.http.client.utils.URIBuilder">
    <constructor-arg value="${foobar.baseurl}"/>
</bean>

这一切都很好,但URLBuilder剥离了/v3/reporting部分,然后当我尝试做这样的事情时。

    //Set URI path and query params
    uriBuilder.setPath("/fooReports")
              .setParameter("type_of_foo", FOO_TYPE);

所以请求变成了这个

  

https://api.foobar.com/fooReports?type_of_foo=bar

自然地给出了HTTP 404。

那么如何阻止URIBuilder剥离我的网址的一部分,以便我有正确的URL如下所示?

  

https://api.foobar.com/v3/reporting/fooReports?type_of_foo=bar

1 个答案:

答案 0 :(得分:2)

/v3/reporting是(原始)路径的一部分。当您设置其他内容的路径时,在这种情况下/fooReports,它会被覆盖。

您可以尝试使用

撰写新路径
final String originalPath = uriBuilder.getPath();
uriBuilder.setPath(originalPath + "/fooReports")             
          .setParameter("type_of_foo", FOO_TYPE);