使用纯 Java 获取响应 null

问题描述 投票:0回答:2

使用纯 Java,我尝试发送 Get 请求并得到 null 响应。 我的代码有错误吗?

public static void TradeExchange() 抛出 IOException, InterruptedException {

                String urlString = "https://api.spimex.com/otc/lookup-tables/1";

                HttpClient httpClient = new HttpClient() {
                        @Override
                        public Optional<CookieHandler> cookieHandler() {
                                return Optional.empty();
                        }

                        @Override
                        public Optional<Duration> connectTimeout() {
                                return Optional.empty();
                        }

                        @Override
                        public Redirect followRedirects() {
                                return null;
                        }

                        @Override
                        public Optional<ProxySelector> proxy() {
                                return Optional.empty();
                        }

                        @Override
                        public SSLContext sslContext() {
                                return null;
                        }

                        @Override
                        public SSLParameters sslParameters() {
                                return null;
                        }

                        @Override
                        public Optional<Authenticator> authenticator() {
                                return Optional.empty();
                        }

                        @Override
                        public Version version() {
                                return null;
                        }

                        @Override
                        public Optional<Executor> executor() {
                                return Optional.empty();
                        }

                        @Override
                        public <T> HttpResponse<T> send(HttpRequest httpRequest, HttpResponse.BodyHandler<T> bodyHandler) throws IOException, InterruptedException {
                                return null;
                        }

                        @Override
                        public <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest httpRequest, HttpResponse.BodyHandler<T> bodyHandler) {
                                return null;
                        }

                        @Override
                        public <T> CompletableFuture<HttpResponse<T>> sendAsync(HttpRequest httpRequest, HttpResponse.BodyHandler<T> bodyHandler, HttpResponse.PushPromiseHandler<T> pushPromiseHandler) {
                                return null;
                        }
                };
                HttpRequest httpRequest = HttpRequest.newBuilder(URI.create(urlString))
                        .GET()
                        .build();
                try {
                        HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
                        String body = response.body();
                } catch (IOException | InterruptedException e) {
                        System.out.println(e.getMessage());
                }
        }
java httprequest
2个回答
1
投票

我不知道您为什么要使用返回空值和空可选值的方法来实现自己的 HttpClient,并期望它能够正常工作。

Java已经有Http客户端的实现,你只需要使用它即可

HttpClient client = HttpClient.newHttpClient();

或使用生成器:

HttpClient.newBuilder()
...

来自官方文档的例子

一篇介绍如何使用 Java HttpClient 的文章


0
投票

你不应该实现你自己的返回空值的 HttpClient 你可以试试这个:

HttpClient httpClient = HttpClient.newBuilder()
     .version(HttpClient.Version.HTTP_1_1)
     .connectTimeout(Duration.ofSeconds(10))
     .build();
© www.soinside.com 2019 - 2024. All rights reserved.