【问题标题】:Vert.x WebClient Http Get returns 400Vert.x WebClient Http Get 返回 400
【发布时间】:2020-07-14 09:10:45
【问题描述】:

我有这个非常简单的 Verticle:

class PingVerticle : AbstractVerticle() {

    override fun start() {
        var options = WebClientOptions().setSsl(true).setVerifyHost(false).setTrustAll(true);
        WebClient.create(vertx, options)
                .get(443, "https://google.com", "")
                .ssl(true)
                .send { r ->
                    if(r.succeeded()) {
                        var r = r.result();
                        println(r.statusCode())
                    } else {
                        println("failed")
                    }
                }
    }
}

而且我总是得到结果 400 - 错误请求。有什么想法我在这里做错了吗?..

【问题讨论】:

    标签: kotlin vert.x


    【解决方案1】:

    您使用的 get 方法需要 3 个参数:

    • 端口
    • 主持人
    • 相对 URI

    应该是这样的:

    webClient
     .get(443, "google.com", "")
     .ssl(true)
    

    或者,使用getAbs,只需:

    webClient
     .getAbs("https://google.com")
    

    问题作者更新: 请阅读此答案下的讨论以了解完整情况。尽管答案是有道理的,但由于问题的表述可能很糟糕,这个答案并不能完全解决它,但它下面的 cmets 可能会。

    【讨论】:

    • 感谢您的回复。但是您提出的两种变体都会产生 404 - Not Found 状态代码。
    • 也许 Google try 不喜欢没有 Accept 标头的请求。尝试添加Accept: */*
    • 不幸的是,这也没有帮助我。整个问题绝对是可笑的,因为它不应该那么难:)
    • 它适用于我和其他人就好了。您的环境中可能存在导致此问题的某些东西(代理?)。您可以从打印响应正文开始,看看服务器是否告诉您问题。祝你好运
    • 其实这最后的评论是正确的!我安装了 NordVPN,也许它为 DNS 配置设置了一些代理。在我打印了响应正文后问题就很清楚了,其中说明了来自 NordVPN 的一些响应,即那些 DNS 不再工作,或者其他什么。删除该代理后,它开始按预期工作。仍然不确定为什么 Vert.x 如此敏感,考虑到纯 Java HttpClient、.Net HttpClient 和 NodeJS http 客户端即使在不更改此 NordVPN 部分的情况下也能正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多