【问题标题】:Apache Http UrlBuilder stripping API version from URLApache Http UrlBuilder 从 URL 中剥离 API 版本
【发布时间】:2017-01-17 13:42:59
【问题描述】:

全部,

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

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 的一部分,以便我拥有如下正确的 URL?

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

【问题讨论】:

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


    【解决方案1】:

    /v3/reporting 是(原始)路径的一部分。当您设置到其他东西的路径时,在本例中为/fooReports,它会被覆盖。

    您可以尝试使用

    final String originalPath = uriBuilder.getPath();
    uriBuilder.setPath(originalPath + "/fooReports")             
              .setParameter("type_of_foo", FOO_TYPE);
    

    【讨论】:

    • 谢谢,很遗憾他们不能为这种情况添加其他属性,如 API 或版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多