【发布时间】:2017-05-10 23:44:45
【问题描述】:
我正在尝试连接到需要 api 密钥的第 3 方 API。使用传统的 HttpURLConnection 可以正常工作...我得到 200 响应
HttpURLConnection connection = (HttpURLConnection) new URL("https://www.server.com/download?apikey=<MY_KEY>"
但是,当使用 Vertx WebClient (io.vertx.ext.web.client.WebClient) 我总是得到 403 Forbidden
webClient = WebClient.create(vertx, new WebClientOptions());
webClient.get("/download")
.addQueryParam("apikey", "<MY_KEY>")
.ssl(true)
.host("www.server.com")
.port(443)
.send(downloadFileHandler ->
{
经调查,原因似乎是因为 API 正在重定向到另一个 URL,原始 URL 和重定向都使用 SSL。不知何故,Vertx Web 客户端没有维护握手。
【问题讨论】:
-
这个问题可以通过与两个独立的 WebClient 实例建立两个连接来解决,第一个连接到原始 URL 并将 followRedirects 设置为 false 以允许读取标头以获取重定向 URL。然后向重定向 URL 发出单独的请求以进行实际下载。但这并不理想。