Apache HttpClient and custom ports

前端 未结 3 1312
遥遥无期
遥遥无期 2021-02-06 17:15

I\'m using the Apache HttpClient 4 and it works fine. The only thing that doesn\'t work is custom ports. It seems like the root directory is fetched and the port is ignored.

3条回答
  •  春和景丽
    2021-02-06 17:51

    Another approach is to configure httpClient to use a custom SchemaPortResolver.

    int port = 8888;
    this.httpClient = HttpClients.custom()
            .setConnectionManager(connectionManager)
            .setConnectionManagerShared(true)
            .setDefaultCredentialsProvider(authenticator.authenticate(url,
                    port, username, password))
            .setSchemePortResolver(new SchemePortResolver() {
                @Override
                public int resolve(HttpHost host) throws UnsupportedSchemeException {
                    return port;
                }
            })
            .build();
    

    This way, you avoid problems of using a String to construct a HttpPost and calling httpClient.execute(host, httpPost, handler, context), only finding your port is appended after the path, like: http://localhost/api:8080, which is wrong.

提交回复
热议问题