`

jdk6.0从入门到精通-----chapter6--http

阅读更多


用httpconnection进行文件下载,建立一般的java项目ch06

package HTTP.HttpConnection;

import java.net.URL;
import java.net.HttpURLConnection;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
//下载程序
public class TestHttpConnection
{    
    public static void main(String[] args) //args[0]为待下载文件的url
    {    	      
    	  try
    	  {
//    		HttpURLConnection对象发出http请求报文,接收响应报文
            HttpURLConnection httpConnection = (HttpURLConnection) new URL(args[0]).openConnection();
            httpConnection.setRequestMethod("GET");		
            BufferedInputStream bis=new BufferedInputStream(httpConnection.getInputStream());
            ByteArrayOutputStream baos=new ByteArrayOutputStream();
            byte[] buff=new byte[1024];
            int bytesRead;
            while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) 
            {
                baos.write(buff, 0, bytesRead);
            }
            buff=null;
            String fileName=args[0].substring(args[0].lastIndexOf("/")+1);
            FileOutputStream fos=new FileOutputStream(fileName); //在当前项目ch06生成一个文件
            fos.write(baos.toByteArray()); //baos.toByteArray()形成字节数组,一次性将字节数组写入文件,但如果远程文件尺寸较大,就会导致JVM内存溢出
            baos.close();
            fos.close();
        }
        catch(IOException ioe)
        {
        	  ioe.printStackTrace();
        }    	
    }   
}

执行时如果传入的参数为http://www.sina.com/index.html,就会在ch06目录下生成一个index.html与sina网的首页内容一样


登录需要验证的web站点,Authenticator会提供账户?

package HTTP.Authenticator;

import java.io.PrintWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.StringWriter;
import java.io.IOException;
import java.net.URL;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.MalformedURLException;

public class TestAuthenticator
{	  
    public static void main(String[] args)
	  {
	  	  Authenticator.setDefault(new MyAuthenticator(args[1],args[2]));//user,password
	      System.out.println( new TestAuthenticator().fetchURL(args[0]) );   //url
    }

    private String fetchURL (String urlString)
	  {
	    StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        try 
		    {
		    URL url = new URL(urlString);
            InputStream content = (InputStream)url.getContent();//get url content
            BufferedReader in = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = in.readLine()) != null) //read
		        {
		            pw.println (line); //print in console
            }
        } 
        catch(MalformedURLException e) 
		    {
		        pw.println ("URL无效");
        } 
	      catch(IOException e) 
		    {  
		        pw.println ("读取URL资源时出错");
        }
        return sw.toString();
   }
}

class MyAuthenticator extends Authenticator 
{
	  private String user=null;
	  private String password=null;
	
	  public MyAuthenticator(String user, String password)
	  {
	  	  this.user=user;
	  	  this.password=password;
	  }
	
    protected PasswordAuthentication getPasswordAuthentication() 
    {
	      char[] ch=new char[this.password.length()];
	      password.getChars(0,this.password.length(),ch,0);
	      return new PasswordAuthentication (this.user, ch);
    }
}

分享到:
评论

相关推荐

    jdk6.0从入门到精通-----chapter17动态编程

    《JDK 6.0从入门到精通——Chapter 17 动态编程》 在Java编程领域,JDK 6.0版本引入了许多新特性,其中动态编程是提升开发效率和灵活性的重要方面。本章将深入探讨动态编程的概念、用途以及如何在JDK 6.0中利用这些...

    jdk6.0从入门到精通-----chapter18与动态语言结合

    标题中的“jdk6.0从入门到精通-----chapter18与动态语言结合”指的是Java开发工具包(JDK)6.0版本中的一个章节,主要探讨了如何将Java与动态编程语言集成。在Java 6中,引入了一个重要的特性,即Java平台标准版6...

    jdk6.0从入门到精通-----chapter5网络编程 新I/O(含源码下载)

    在Java编程领域,JDK(Java Development Kit)是开发和运行Java应用程序的...总的来说,"JDK6.0从入门到精通-----chapter5网络编程 新I/O"是一个极好的学习资源,无论你是初学者还是有经验的开发者,都能从中获益良多。

    (源码下载)jdk6.0从入门到精通-----chapter2--输入输出,克隆对象

    标题 "(源码下载)jdk6.0从入门到精通-----chapter2--输入输出,克隆对象" 提供了我们要探讨的主题,即Java中的输入输出流(I/O Stream)和对象克隆。在这个章节中,我们将深入理解这两个关键概念。 **输入输出流...

    jdk6.0从入门到精通-----chapter8并发多线程(1)(源码下载)

    本章“jdk6.0从入门到精通-----chapter8并发多线程(1)”着重讲解了Java 6中关于多线程的基本知识和实践技巧。通过源码下载,读者可以更直观地理解多线程的实现方式。 首先,我们要理解什么是多线程。在单线程环境...

    jdk6.0从入门到精通-----chapter7线程

    《JDK 6.0线程入门到精通——Chapter 7》 在Java开发中,线程是程序执行的最小单元,它使得一个程序能够同时处理多个任务,从而提高了程序的效率和响应性。在JDK 6.0中,线程的管理和使用有了更加完善的特性,对于...

    jdk6.0从入门到精通-----chapter4--文件目录操作

    本章节将深入探讨JDK 6.0中的文件和目录操作,这对于任何Java开发者来说都是必备的知识点。在实际项目中,我们需要频繁地与文件系统交互,例如读取、写入、移动或删除文件和目录,因此理解这部分内容至关重要。 ...

    jdk6.0从入门到精通-----chapter16反射机制-spring AOP

    在Java编程领域,JDK6.0是一个重要的版本,它为开发者提供了丰富的特性和改进。本章我们将深入探讨“反射机制”以及如何结合Spring AOP(面向切面编程)进行应用。反射是Java中的一种强大工具,允许程序在运行时检查...

    jdk 6.0 jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008(微信开发平台开发JDK)

    微信开发平台开发工具 JDK jdk 6.0 jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008

    jdk-7u80-windows-x64安装包

    jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-windows-x64安装包 jdk-7u80-...

    JDK6.0+中文文档-lytim24.part1.rar

    java6.0文档chm版,分成三部分,分别为JDK6.0+中文文档-lytim24.part1.rar、JDK6.0+中文文档-lytim24.part2.rar、JDK6.0+中文文档-lytim24.part3.rar

    开发工具 jdk-8u121-windows-i586

    开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8u121-windows-i586开发工具 jdk-8...

    官方JDK6.0中文版

    - **易于理解的API文档:** JDK_API_6_0_Chm文件包含了JDK 6.0的中文API文档,开发者可以直接查阅中文说明,避免了语言障碍,提高了开发效率。 - **更好的本地化支持:** 除了API文档,许多错误信息和警告也进行了...

    jdk-6u39-windows-i586

    jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows-i586,jdk-6u39-windows...

    jdk-6u21-windows-x64

    jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-windows-x64 jdk-6u21-...

    jdk-6u45-linux-x64.zip_jdk-1.6u45_jdk-6u45_jdk-6u45-linux-x64_jd

    这个压缩包文件"jdk-6u45-linux-x64.zip"包含的是JDK 1.6.0_45(也被称为6u45或1.6u45)的64位Linux版本。JDK 1.6是Java平台标准版的一个重要版本,它提供了许多功能和性能改进,是许多企业级应用的基础。 JDK 1.6u...

    java-jdk1.8-8u361-all-jdk-win-linux

    java-jdk1.8-8u361-all-jdk-win-linux 该压缩包中包含jdk1.8-8u361下windows版本和linux版本,其包含快速安装包和对应的jdk压缩包版本,具体内容如下: jdk-8u361-linux-aarch64.rpm jdk-8u361-linux-i586.rpm jdk-8...

    JDK6.0u10b32-windows-

    这个是安装开发工具java jdk 有很多用途

    jdk-8u131-windows-x64

    jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-windows-x64jdk-8u131-...

    jdk-8u311-windows-x64.exe

    jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u...

Global site tag (gtag.js) - Google Analytics