HttpURLConnection文件下载

12 篇文章 0 订阅

基本方法和类关系:

java.net
类 HttpURLConnection
java.lang.Object
继承者 java.net.URLConnection
继承者 java.net.HttpURLConnection
直接已知子类:
HttpsURLConnection
public abstract class HttpURLConnection

extends
URLConnection

支持 HTTP 特定功能的 URLConnection。有关详细信息,请参阅 the spec 。

每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。
abstract void disconnect()
指示近期服务器不太可能有其他请求。
InputStream getErrorStream()
如果连接失败但服务器仍然发送了有用数据,则返回错误流。
static boolean getFollowRedirects()
返回指示是否应该自动执行 HTTP 重定向 (3xx) 的 boolean 值。
String getHeaderField(int n)
返回 nth 头字段的值。
long getHeaderFieldDate(String name, long Default)
返回解析为日期的指定字段的值。
String getHeaderFieldKey(int n)
返回 nth 头字段的键。
boolean getInstanceFollowRedirects()
返回此 HttpURLConnection 的 instanceFollowRedirects 字段的值。
Permission getPermission()
返回一个权限对象,其代表建立此对象表示的连接所需的权限。
String getRequestMethod()
获取请求方法。
int getResponseCode()
从 HTTP 响应消息获取状态码。
String getResponseMessage()
获取与来自服务器的响应代码一起返回的 HTTP 响应消息(如果有)。
void setChunkedStreamingMode(int chunklen)
此方法用于在预先不知道内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。
void setFixedLengthStreamingMode(int contentLength)
此方法用于在预先已知内容长度时启用没有进行内部缓冲的 HTTP 请求正文的流。
static void setFollowRedirects(boolean set)
设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
void setInstanceFollowRedirects(boolean followRedirects)
设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
void setRequestMethod(String method)
设置 URL 请求的方法, GET POST HEAD OPTIONS PUT DELETE TRACE 以上方法之一是合法的,具体取决于协议的限制。
abstract boolean usingProxy()
指示连接是否通过代理。

responseCode
protected int responseCode
表示三位字数的 HTTP 状态码 (Status-Code) 的 int。
1xx:Informational
2xx:Success
3xx:Redirection
4xx:Client Error
5xx:Server Error

setRequestMethod
public void setRequestMethod(String method)
throws ProtocolException
设置 URL 请求的方法,
GET
POST
HEAD
OPTIONS
PUT
DELETE
TRACE
以上方法之一是合法的,具体取决于协议的限制。默认方法为 GET。

示例代码:

package com.xxx.pay.mobile.controller;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class Upload {

	/** 
     * 从网络Url中下载文件 
     * @param urlStr 
     * @param fileName 
     * @param savePath 
     * @throws IOException 
     */  
    public static void  downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{  
        URL url = new URL(urlStr);    
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();    
                //设置超时间为3秒  
        conn.setConnectTimeout(3*1000);  
        //防止屏蔽程序抓取而返回403错误  
        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");  
  
        //得到输入流  
        InputStream inputStream = conn.getInputStream();    
        //获取自己数组  
        byte[] getData = readInputStream(inputStream);      
  
        //文件保存位置  
        File saveDir = new File(savePath);  
        if(!saveDir.exists()){  
            saveDir.mkdir();  
        }  
        File file = new File(saveDir+File.separator+fileName);      
        FileOutputStream fos = new FileOutputStream(file);       
        fos.write(getData);   
        if(fos!=null){  
            fos.close();    
        }  
        if(inputStream!=null){  
            inputStream.close();  
        }  
  
  
        System.out.println("info:"+url+" download success");   
  
    }  
  
  
  
    /** 
     * 从输入流中获取字节数组 
     * @param inputStream 
     * @return 
     * @throws IOException 
     */  
    public static  byte[] readInputStream(InputStream inputStream) throws IOException {    
        byte[] buffer = new byte[1024];    
        int len = 0;    
        ByteArrayOutputStream bos = new ByteArrayOutputStream();    
        while((len = inputStream.read(buffer)) != -1) {    
            bos.write(buffer, 0, len);    
        }    
        bos.close();    
        return bos.toByteArray();    
    }    
  
    public static void main(String[] args) throws IOException {  
        try{  
            downLoadFromUrl("http://ac.qq.com/ComicView/index/id/622890/cid/1",  
                    "百度.html","d:");  
        }catch (Exception e) {  
            // TODO: handle exception  
        }  
        
    }  
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值