我如何在不使用BufferedReader的情况下从Java中的http get请求检索响应

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

我知道有成千上万的文章和问答,教我如何用Java发送HTTP请求。但是它们所有人都使用BufferedReader来读取服务器的响应。

我不想使用BufferedReader,因为在我的android项目上使用它时遇到了“ OutOfMemoryError”。我不知道为什么这会在其他人成功的同时发生,但是这肯定是经过长时间的调试后由BufferedReader引起的,我对此感到非常厌倦。除了创建新的BufferedReader对象之外,还有什么方法可以检索响应? 我只想发送最简单的get请求,并获取提供HTML内容的响应,而不考虑效率。

代码示例如下(这不是我的代码,只是为了便于讨论。如果您有更好的示例,将不胜感激:)]

public class HttpURLConnection_GET_Request_Example {

    public static void main(String[] args) throws Exception {

        String url = "http://www.google.com/search?q=techndeck";
        URL urlObj = new URL(url);
        HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();

        connection.setRequestMethod("GET");
        connection.setRequestProperty("User-Agent", "Mozilla/5.0");

        System.out.println("Send 'HTTP GET' request to : " + url);

        Integer responseCode = connection.getResponseCode();
        System.out.println("Response Code : " + responseCode);

        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader inputReader = new BufferedReader(
                new InputStreamReader(connection.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = inputReader.readLine()) != null) {
                response.append(inputLine);
            }

            inputReader.close();

            System.out.println(response.toString());
        }
    }

}
java android http get bufferedreader
1个回答
0
投票

使用OkHttp进行有效的网络访问

什么是OkHTTP?OkHTTP是一个开放源码项目,旨在成为高效的HTTP客户端。

// avoid creating several instances, should be singleon
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
                     .url("https://www.vogella.com/index.html")
                     .build();

您也可以添加参数

HttpUrl.Builder urlBuilder = HttpUrl.parse("https://api.github.help").newBuilder();
urlBuilder.addQueryParameter("v", "1.0");
urlBuilder.addQueryParameter("user", "vogella");
String url = urlBuilder.build().toString();

Request request = new Request.Builder()
                     .url(url)
                     .build();

来源https://www.vogella.com/tutorials/JavaLibrary-OkHttp/article.html

© www.soinside.com 2019 - 2024. All rights reserved.