`

使用HttpURLConnection访问web页面

阅读更多
URLConnection类给应用程序和web资源之间架设起了通信的桥梁,这些web资源通常是通过url来标记的,比如http://java.sun.com。本文将讲述如何使用HttpURLConnection来访问web页面。

    URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection。另外一个重要的类是URL,通常URL可以通过传给构造器一个String类型的参数来生成一个指向特定地址的URL实例。比如:

URL url = new URL("http://www.j2medev.com");
URLConnection con = url.openConnection();

    通过上面的语句我们就可以得到一个URLConnection的实例,如果你在后面添加一句话System.out.println(con.getClass())你会得到class sun.net.www.protocol.http.HttpURLConnection 的输出,这证明返回来得con是URLConnection的子类HttpURLConnection实例。如果你的URL的String参数是https://java.sun.com,那么它会打印出class sun.net.www.protocol.https.HttpsURLConnectionImpl。下面我们编写一段程序,通过使用HttpURLConnection访问web页面并把得到的内容打印到控制台。代码如下
   import java.net.URL;
   import java.net.MalformedURLException;
   import java.net.URLConnection;
   import java.io.IOException;
   import java.io.BufferedReader;
   import java.io.InputStreamReader;

   public class WebPageReader {

      private static URLConnection connection;

      private static void connect( String urlString ) {
        try {
          URL url = new URL(urlString);
          connection = url.openConnection();
   System.out.println(connection.getClass());
        } catch (MalformedURLException e){
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

      private static void readContents() {
        BufferedReader in = null;
        try {
          in = new BufferedReader(
            new InputStreamReader(
              connection.getInputStream()));

          String inputLine;
          while (
            (inputLine = in.readLine()) != null) {
            System.out.println(inputLine);
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

      public static void main(String[] args) {
        if (args.length != 1) {
          System.err.println("usage: java WebPageReader "
                                             + "<url>");
          System.exit(0);
        }
        connect(args[0]);
        readContents();
      }
   }
    我们编译这个代码并执行
javac WebPageReader.java
java WebPageReader http://localhost  你可以从控制台看到他把页面的内容。

    如果你使用代理访问外面的网络的话可以在程序中添加上下面的代码
    System.getProperties().put("proxySet", "true");
    System.getProperties().put("proxyHost", "10.154.134.110");
    System.getProperties().put("proxyPort", "8080");

    下面简单的介绍一下重定向的问题,当你访问某个URL的时候,Server可能会把你重新定向到另外一个地址,我们可以用程序看看这个问题是怎么发生的。我们准备一个简单的asp页面位于http://localhost/test/redirect.asp,内容如下
<%
response.redirect("http://localhost")
%>
当访问他的时候他会把你定向到http://localhost 的地址去。
   import java.net.URL;
   import java.net.MalformedURLException;
   import java.net.HttpURLConnection;
   import java.io.IOException;

   public class RedirectingReader {

      private static HttpURLConnection connection;

      private static void connect( String urlString ) {
        try {
          URL url = new URL(urlString);
          connection
              = (HttpURLConnection)url.openConnection();
          System.out.println(connection.getURL());
          System.out.println(
              connection.getResponseCode() +
              " " + connection.getResponseMessage());
          System.out.println(connection.getURL());
        } catch (MalformedURLException e){
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }

      public static void main(String[] args) {
        if (args.length != 1) {
          System.err.println(
               "usage: java WebPageReader "
               + "<url>");
          System.exit(0);
        }
        connect(args[0]);
      }
   }
编译程序并执行
javac RedirectingReader.java
java RedirectingReader http://localhost/test/redirect.asp
可以得到输出为
http://localhost/test/redirect.asp
200 OK
http://localhost/localstart.asp
分享到:
评论

相关推荐

    使用HttpURLConnection访问web页面[文].pdf

    这篇文章主要探讨如何利用`HttpURLConnection`访问Web页面并读取其内容。 首先,我们需要了解`URLConnection`类的作用。`URLConnection`是Java API中的一个抽象类,它为应用程序提供了与不同协议的URL(如HTTP、FTP...

    tomcat与web程序结构与Http协议与HttpUrlConnection.pdf

    总结,这份资料主要讲解了Tomcat服务器的基本概念、配置与管理,Web应用的结构,以及HTTP协议和Java中的HttpUrlConnection类如何在实际开发中使用。对于理解和操作基于Tomcat的Java Web应用非常有帮助。

    手机客户端 访问WEB

    在移动互联网时代,手机客户端访问WEB服务已经成为日常生活中不可或缺的一部分。这里的"手机客户端访问WEB TOMCAT"主题,主要涉及的是如何让移动应用通过网络与运行在TOMCAT服务器上的Web应用程序进行交互。TOMCAT是...

    tomcat与web程序结构与Http协议HttpUrlConnection(含答案).pdf

    如果在尝试访问部署在Tomcat上的应用时遇到404错误,通常是因为URL中的页面名称错误。若要修改Tomcat的端口,需编辑`tomcat/conf/server.xml`文件。 【Web程序结构】 开发一个JSP动态网站的常规步骤包括设计Web项目...

    tomcat与web程序结构与Http协议与HttpUrlConnection[参考].pdf

    当访问Tomcat部署的应用时,如果出现404错误,通常意味着输入的URL中页面名称错误,即服务器找到了对应的主机和协议,但无法找到请求的资源。选项D正确解释了这种错误的原因。 【修改Tomcat端口】 要修改Tomcat的...

    通过Android客户端访问web服务器,实现一个登录功能,服务端+数据库+安卓端_android源码.zip

    在这个项目中,我们主要关注的是如何使用Android客户端与web服务器进行交互,实现一个基本的登录功能。这涉及到三个主要组成部分:服务端、数据库管理和Android应用。以下是对这些关键知识点的详细说明: 1. **...

    Accessing Web Services from a Visual Web Application

    在Visual Web应用中,可以使用HttpURLConnection、Apache HttpClient或者Java 8的HttpClient库进行REST调用。 **6. 数据绑定和可视化** 在Visual Web应用中,调用Web服务返回的数据可以绑定到JSF组件上,实现动态...

    Java中访问页面的HttpClient类

    在Java编程中,访问网页内容是一项常见的任务,通常我们使用HttpClient类来实现这一功能。HttpClient是Apache HttpClient库的核心类,它提供了丰富的API用于构建复杂的HTTP客户端应用。这篇博客(原文链接:...

    Android通过URL跟web服务器通信方式(3.0以上通用).pdf

    以上是关于Android通过URL与Web服务器通信的基本知识点,涉及了HttpURLConnection使用、网络权限配置、Servlet技术、Tomcat服务器部署以及Android与Servlet交互的具体细节。掌握这些知识,开发者可以有效地在Android...

    java模拟微信浏览器访问.rar

    在Java编程中,模拟微信浏览器访问Web页面是一个常见的需求,特别是在自动化测试、数据抓取或者模拟用户行为的场景。这个“java模拟微信浏览器访问.rar”压缩包中的主要文件是“MonitorWeixinBrowser.java”,我们...

    天气预报Web Services

    Web服务通常使用SOAP(简单对象访问协议)或REST(Representational State Transfer)架构,使得不同系统之间能够共享数据和功能。在这个案例中,Web服务可能采用HTTP协议来传输数据,便于跨平台交互。 【描述】...

    (钉钉)第三方WEB网站扫码登录

    这里的“第三方WEB网站扫码登录”指的是允许用户通过他们的钉钉账户,使用扫码的方式安全地登录到非钉钉自身的Web应用。 【描述】: 虽然描述部分是NULL,但我们可以推测这个话题将涉及以下内容:首先,开发者需要...

    Java-Web-crawler-spider.rar_JAVA web 爬虫_Java spider_crawler_spid

    2. **网络请求**:使用Java的HttpURLConnection或者第三方库如Apache HttpClient、OkHttp等发送GET或POST请求,获取网页内容。 3. **HTML解析**:解析HTML内容,可以使用Jsoup、JTidy等库来简化HTML解析过程,提取出...

    移动应用开发:创建摄像头监控界面.pptx

    WebView组件是一个基于webkit引擎、展现web页面的组件。WebView组件功能强大,除了具有一般View的属性和设置外,还可以对url请求、页面加载、渲染、页面交互进行强大的处理,Android 4.4版本之后,直接使用Chrome...

    一个简单的web浏览器源码(java版)

    前进和后退功能是大多数Web浏览器必备的,它们允许用户在浏览历史中移动,方便用户回溯到之前访问过的页面或者继续前进到新的链接。此外,"简单"一词表明这个浏览器可能没有复杂的特性,如书签、下载管理或插件支持...

    JAVA编写的TWITTER搜索的webserver application

    这包括如何获取API密钥和访问令牌,以及如何使用这些凭证进行身份验证。此外,还需要了解如何使用API的各个端点,如搜索推文、获取用户信息等。 5. **JSON解析**:Twitter API返回的数据通常是JSON格式,因此开发者...

    Android应用源码之通过Android客户端访问web服务器,实现一个登录功能,服务端+数据库+安卓端.zip

    在本项目中,可能使用了`HttpURLConnection`、`OkHttp`或者`Retrofit`等库来发起网络请求,发送登录信息到服务器,并接收验证结果。 2. **JSON数据交换**:服务器与客户端之间的数据交换通常采用JSON格式,因为JSON...

    android应用和web简单交互DEMO

    在Android中,我们通常使用`HttpURLConnection`或第三方库如Volley、OkHttp来发起HTTP请求。 2. **HTTP请求**: Android应用可以发送GET和POST请求。GET请求用于获取资源,参数附在URL后面;POST请求则将数据放在...

    网页访问模块.rar

    例如,在Java中,`HttpURLConnection`和`HttpClient`是标准库提供的选项,而`OkHttp`和`Apache HttpClient`是流行的第三方库。在JavaScript中,原生的`fetch` API或者`XMLHttpRequest`对象用于异步请求。在Node.js...

    用HttpClient来模拟浏览器GET POST

    为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面,这过程就需要自行处理cookie,想想当你用java.net.HttpURLConnection来完成这些功能时是多么恐怖的事情啊!况且这仅仅是我们所说...

Global site tag (gtag.js) - Google Analytics