`

java获取页面源码的三种方式(转载,只为记录)

阅读更多
一、GetURL.java
import java.io.*;
import java.net.*;
public class GetURL {
    public static void main(String[] args) {
        InputStream in = null; 
        OutputStream out = null;
        try {
            // 检查命令行参数
            if ((args.length != 1)&& (args.length != 2))
                throw new IllegalArgumentException("Wrong number of args");
   
         
            URL url = new URL(args[0]);   //创建 URL
            in = url.openStream();        // 打开到这个URL的流
            if (args.length == 2)         // 创建一个适当的输出流
                out = new FileOutputStream(args[1]);
            else out = System.out;
   
            // 复制字节到输出流
            byte[] buffer = new byte[4096];
            int bytes_read;
            while((bytes_read = in.read(buffer)) != -1)
                out.write(buffer, 0, bytes_read);
}
    
        catch (Exception e) {
            System.err.println(e);
            System.err.println("Usage: java GetURL <URL> [<filename>]");
        }
        finally {  //无论如何都要关闭流
            try { in.close();  out.close(); } catch (Exception e) {}
        }
    }
}

运行方法:
C:\java>java   GetURL  http://127.0.0.1:8080/kj/index.html index.html

二、geturl.jsp

<%@ page import="java.io.*" contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="java.net.*"%>


<%
        String htmpath=null;
        BufferedReader in = null;
        InputStreamReader isr = null;
        InputStream is = null;
        PrintWriter pw=null;
        HttpURLConnection huc = null;
        try{
           htmpath=getServletContext().getRealPath("/")+"html\\morejava.html";
           pw=new PrintWriter(htmpath);
           URL url = new URL("http://127.0.0.1:8080/kj/morejava.jsp"); //创建 URL
              huc = (HttpURLConnection)url.openConnection();
              is = huc.getInputStream();
              isr = new InputStreamReader(is);
              in = new BufferedReader(isr);
              String line = null;
              while(((line = in.readLine()) != null)) {
                 if(line.length()==0)
                   continue;
                 pw.println(line);
               }
     
         }
    
        catch (Exception e) {
            System.err.println(e);
        }
         finally {  //无论如何都要关闭流
            try {  is.close(); isr.close();in.close();huc.disconnect();pw.close();  
            } catch (Exception e) {}
        }


%>
        OK--,创建文件成功

三、HttpClient.java

import java.io.*;
import java.net.*;

public class HttpClient {
    public static void main(String[] args) {
        try {
            // 检查命令行参数
            if ((args.length != 1) && (args.length != 2))
                throw new IllegalArgumentException("Wrong number of args");
          
            OutputStream to_file;
            if (args.length == 2)
                  to_file = new FileOutputStream(args[1]);//输出到文件
            else
                  to_file = System.out;//输出到控制台
          
         
            URL url = new URL(args[0]);
            String protocol = url.getProtocol();
            if (!protocol.equals("http"))
               throw new IllegalArgumentException("Must use 'http:' protocol");
            String host = url.getHost();
            int port = url.getPort();
            if (port == -1) port = 80;
            String filename = url.getFile();

            Socket socket = new Socket(host, port);//打开一个socket连接

            InputStream from_server = socket.getInputStream();//获取输入流
            PrintWriter to_server = new PrintWriter(socket.getOutputStream());//获取输出流
          
       
            to_server.print("GET " + filename + "\n\n");//请求服务器上的文件
            to_server.flush();  // Send it right now!
          
            byte[] buffer = new byte[4096];
            int bytes_read;

            //读服务器上的响应,并写入文件。
            while((bytes_read = from_server.read(buffer)) != -1)
                to_file.write(buffer, 0, bytes_read);
          
            socket.close();
            to_file.close();
        }
        catch (Exception e) {  
            System.err.println(e);
            System.err.println("Usage: java HttpClient <URL> [<filename>]");
        }
    }
}

运行方法:C:\java>java   HttpClient http://127.0.0.1:8080/kj/index.html index.html



注意中文可能会显示乱码,在得到源码后,应该做相应的转码工作,例如:


public static String GetURLstr(String strUrl)
{
  InputStream in = null;
  OutputStream out = null;
  String strdata = "";
  try
  {
   URL url = new URL(strUrl); // 创建 URL
   in = url.openStream(); // 打开到这个URL的流
   out = System.out;

   // 复制字节到输出流
   byte[] buffer = new byte[4096];
   int bytes_read;
   while ((bytes_read = in.read(buffer)) != -1)
   {
    String reads = new String(buffer, 0, bytes_read, "UTF-8");
    //System.out.print(reads);
    strdata = strdata + reads;
    // out.write(buffer, 0, bytes_read);
   }

   in.close();
   out.close();
   return strdata;
  }

  catch (Exception e)
  {
   System.err.println(e);
   System.err.println("Usage: java GetURL <URL> [<filename>]");
   return strdata;
  }
}
分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    java源码包2

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java jdk1.8 源码

    Java JDK 1.8源码是Java开发工具包的一个重要组成部分,它包含了Java语言的核心类库,对于深入理解和学习Java编程语言以及其运行机制至关重要。源码提供了对JVM(Java虚拟机)、类库和API的直接洞察,帮助开发者探究...

    java 连接opc服务源码两种方式Utgard,Jeasyopc

    本文将详细介绍两种常用的Java OPC客户端库——Utgard和Jeasyopc,并提供实际应用的源码示例。 1. **Utgard** Utgard是Java OPC Foundation提供的开源库,它提供了对OPC UA(OPC统一架构)标准的支持。OPC UA不仅...

    海康录像机java客户端程序源码

    海康录像机java客户端程序源码是一套专为海康系列硬盘录像机设计的Java应用程序,旨在提供一个全面的监控客户端解决方案,使用户能够通过Java平台远程操控和管理海康录像机。这套源码的核心功能包括实时视频监控、...

    java远程监控源码

    标题“Java远程监控源码”涉及的是Java编程中关于远程监控和控制的实现。这个项目可能包含一个客户端(client)和服务器端(server)的架构,通过Socket通信进行数据交互,利用Java Robot类来捕获屏幕图像,以及...

    java 制作的企业网站源码

    java源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码...源码源码源码源码源码源码源码源码源码源码源码源码源码源码源码java...

    java源码包3

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行...

    java中国象棋源码

    Java中国象棋源码是一个非常适合Java初学者和爱好者深入研究的项目,它涵盖了对象编程、图形用户界面(GUI)设计以及复杂算法的应用等多个方面。在这个项目中,开发者使用Java语言来实现一个完整的中国象棋游戏,使...

    java管理系统源码

    这些源码涵盖了不同的应用场景,包括学生信息管理、进销存控制、高校毕业就业分析以及图书管理,为我们提供了丰富的学习素材。以下将分别对这些管理系统的核心知识点进行详细阐述。 1. 学生信息管理系统: 这个...

    华为短信api的java源码

    华为短信API的Java源码是用于与华为短信服务进行交互的一种开发工具,它允许开发者通过编程方式发送、接收和管理短信。在这个压缩包中,可能包含的文件是`smproxy`,这通常是一个代理服务器或者中间件,用于处理与...

    java人脸识别源码

    Java人脸识别源码是一种基于特征脸识别技术的编程实践,它允许开发者通过JavaCV库来实现对人脸的检测和识别功能。JavaCV是一个Java版本的OpenCV库,它为Java程序员提供了方便的接口来处理计算机视觉任务,包括图像...

    java版微信三级分销系统完整源码(带注释)

    java版微信卡密三级分销完整源码 (卡密) 开发框架:struts2、spring、hibernate 开发环境: myeclipse2013、mysql5.1、tomcat7.0 如果是用eclipse导入的话,再加下servlet-api.jar包 设置好数据库信息,部署运行后...

    Java,获取汉字拼音、部首、笔画、笔画数目源文件、源码

    Java中没有内建的方法来直接获取这些信息,所以你需要编写自定义代码或者使用第三方库,如ChineseCharacterInfo,它提供了获取汉字笔画和部首的功能。 以下是一个简单的示例,展示如何使用Pinyin4j获取汉字拼音: ...

    java电子商务网站源码

    【Java电子商务网站源码解析】 Java电子商务网站源码是一套基于Java编程语言开发的用于构建电子商务平台的应用程序。它通常包含一系列的模块,如商品管理、订单处理、用户管理、支付接口集成、库存控制等,旨在提供...

    java自动生成静态页面Demo源码

    Java 自动生成静态页面技术是一种将动态网站内容转化为静态HTML页面的方法,这有助于提高网站的访问速度和搜索引擎优化。在本示例中,"java自动生成静态页面Demo源码" 提供了一个完整的实现,包括源代码和可能使用的...

    Java画图板源码

    线的端点坐标获取可以采用鼠标点取或采用弹出对话框的方式。 任选一种画圆算法实现绘制任意圆心、半径的圆 要求:线能够设置线型、线宽和颜色;线的端点坐标获取可以采用鼠标点取或采用弹出对话框的方式。 任选一种...

    java JDK1.6.0源码 源代码

    Java JDK 1.6.0源码是Java开发者的重要参考资料,它揭示了JDK的核心类库是如何实现的,包括各种核心API和基础组件。对于深入理解Java语言、优化代码以及学习设计模式都有着不可估量的价值。 1. **Java类库**: - `...

    日历备忘录Java源码

    在本项目中,"日历备忘录Java源码" 提供了一套完整的日历应用程序的源代码,主要由四个核心文件组成:NotePad.java、CalendarPad.java、Month.java 和 Year.java。这些文件分别代表了备忘录、日历、月份和年份的功能...

    java项目管理系统源码

    点击项目经费信息管理菜单,进入项目经费信息管理页面,该页面通过列表列出已添加的项目经费信息,包括项目名称、经费金额、追加时间等。 7.项目进度管理:本模块实现对项目进度信息的管理操作,包括项目进度信息的...

Global site tag (gtag.js) - Google Analytics