java - Apache Http UrlBuilder 从 URL 中剥离 API 版本

标签 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 的一部分,以便我获得如下正确的 URL?

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

最佳答案

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

您可以尝试使用以下内容编写新路径

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

关于java - Apache Http UrlBuilder 从 URL 中剥离 API 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39411014/

相关文章:

java - 将 CloseableHttpClient 与 try-with-resources 结合使用

javascript - javascript 的 mxgraph 示例中的 GraphEditor 中的 java 代码负责什么功能?

java - 当本地 jar 包含与 java 库中的类文件同名的类文件时,会发生什么情况?

spring - 使用与 Spring MVC 的内容协商进行 REST API 版本控制

java - Spring - 带有 AbstractWizardFormController 的多个命令类

java - Apache HttpClient(4.1 及更高版本): how to do basic authentication?

java - 当并行测试返回 java.lang.NullPointerException 时调用另一个方法

Java多线程数据库访问

web-services - 在 Spring 中发出 HTTP 请求的最简单方法

java - Lollipop 握手失败