分享

使用HttpURLConnection访问web页面 - ┽JAVASE进阶┾ - Java技术论坛|JavaSE|JavaEE|SCJP|SCWCD|SCEA|SCDJWS|SCBCD|java论坛 迈胜 - Powered by Discuz!

 ShangShujie 2010-04-14

[网 络编程] 使用HttpURLConnection访问web页面

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

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

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

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

  7. public class WebPageReader {

  8. private static URLConnection connection;

  9. private static void connect( String urlString ) {
  10. try {
  11. URL url = new URL(urlString);
  12. connection = url.openConnection();
  13. System.out.println(connection.getClass());
  14. } catch (MalformedURLException e){
  15. e.printStackTrace();
  16. } catch (IOException e) {
  17. e.printStackTrace();
  18. }
  19. }

  20. private static void readContents() {
  21. BufferedReader in = null;
  22. try {
  23. in = new BufferedReader(
  24. new InputStreamReader(
  25. connection.getInputStream()));

  26. String inputLine;
  27. while (
  28. (inputLine = in.readLine()) != null) {
  29. System.out.println(inputLine);
  30. }
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. }
  34. }

  35. public static void main(String[] args) {
  36. if (args.length != 1) {
  37. System.err.println("usage: java WebPageReader "
  38. + "<url>");
  39. System.exit(0);
  40. }
  41. connect(args[0]);
  42. readContents();
  43. }
  44. }
复制代码
我 们编译这个代码并执行
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 的地址去。
  1.   import java.net.URL;
  2.    import java.net.MalformedURLException;
  3.    import java.net.HttpURLConnection;
  4.    import java.io.IOException;

  5.    public class RedirectingReader {

  6.       private static HttpURLConnection connection;

  7.       private static void connect( String urlString ) {
  8.         try {
  9.           URL url = new URL(urlString);
  10.           connection
  11.               = (HttpURLConnection)url.openConnection();
  12.           System.out.println(connection.getURL());
  13.           System.out.println(
  14.               connection.getResponseCode() +
  15.               " " + connection.getResponseMessage());
  16.           System.out.println(connection.getURL());
  17.         } catch (MalformedURLException e){
  18.           e.printStackTrace();
  19.         } catch (IOException e) {
  20.           e.printStackTrace();
  21.         }
  22.       }

  23.       public static void main(String[] args) {
  24.         if (args.length != 1) {
  25.           System.err.println(
  26.                "usage: java WebPageReader "
  27.                + "<url>");
  28.           System.exit(0);
  29.         }
  30.         connect(args[0]);
  31.       }
  32.    }
  33. 编译程序并执行
  34. javac RedirectingReader.java
  35. java RedirectingReader http://localhost/test/redirect.asp
  36. 可以得到输出为
  37. http://localhost/test/redirect.asp
  38. 200 OK
  39. http://localhost/localstart.asp
复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多