【问题标题】:HTTP GET request in javajava中的HTTP GET请求
【发布时间】:2016-07-08 12:09:40
【问题描述】:

我正在尝试在 java 上使用 http get 请求到端口号 4567 上的本地主机。 我收到了获取请求:“wget -q -O- http://localhost:4567/XXXX” [XXXX 是一些参数 - 不相关]。 我为这类事情找到了一个 java 库 java.net.URLConnection 但似乎 URLConnection 对象应该接收 url/port/.. 和所有其他类型的参数(换句话说,你必须构造对象自己),但是,我得到了上面写的完整的 http get 请求。有没有办法简单地“拍摄”请求而不处理为 URLConnection 构建字段?

【问题讨论】:

    标签: java http url get localhost


    【解决方案1】:

    您可以使用您的 URL 创建URL 对象,它会自行计算端口和其他内容。参考:https://docs.oracle.com/javase/tutorial/networking/urls/readingWriting.html

    public class URLConnectionReader {
        public static void main(String[] args) throws Exception {
            URL oracle = new URL("http://localhost:4567/XXXX");
            URLConnection yc = oracle.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                                        yc.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) 
                System.out.println(inputLine);
            in.close();
        }
    }
    

    【讨论】:

    • 所以,基本上,当我在localhost:4567/XXXX 上使用get 请求时,它与浏览localhost:4567/XXXX 并获取那里的内容是一样的? (如你所见,我对此真的很陌生)
    • 是的,当您在浏览器中打开链接时,浏览器会在某个随机端口(即 localhost:54820)创建一个 Socket,并将此套接字连接到在 localhost:4567 运行的服务器套接字。使用它的本地套接字,它从服务器下载内容,如果它可以识别,它会在渲染之前进行一些处理。 (如 HTML 或 XML)。 URLConnection 或 WGEt 也是如此,它们将创建一个本地套接字,但不会做任何额外的事情,因为它们只是 http 客户端。
    【解决方案2】:

    为什么不使用 Apache HTTPClient 库。使用简单。

    HttpClient client = new HttpClient();
    

    参考文档http://hc.apache.org/httpclient-3.x/tutorial.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2022-02-21
      • 1970-01-01
      相关资源
      最近更新 更多