通过httpclient3实现文件下载以及获取文件下载名称

package httpclient3test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HeaderElement;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;

/**
 * @author yan
 * @date 2018-3-22 13:39:22
 * @version V1.0
 * @desc
 */
public class Httpclient3test {

    public static void main(String[] args) throws IOException {
        HttpClient httpClient = new HttpClient();
        GetMethod getMethod = new GetMethod("http://android.myapp.com/android/down.jsp?appid=48157&lmid=2031&g_f=-1&actiondetail=0&softname=&downtype=1&enginekeywd=&topicid=-1&pkgid=-1");

        int statusCode = httpClient.executeMethod(getMethod);
        System.out.println(statusCode);

        //获取response的返回头信息
        Header contentHead = getMethod.getResponseHeader("Content-Disposition");
        
        HeaderElement[] elements = contentHead.getElements();
        String filename = null;

        for (HeaderElement el : elements) {
            //遍历,获取filename
            NameValuePair pair = el.getParameterByName("filename");
            filename = pair.getValue();

            if (null != filename) {
                break;
            }
        }

        System.out.println("filename:" + filename);

        InputStream is = getMethod.getResponseBodyAsStream();
        
        inputStream2File(is, new File("G:\\tmp\\"+filename));
        
        getMethod.releaseConnection();

    }

    public static void inputStream2File(InputStream is, File file) {
        OutputStream os = null;

        try {
            os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Httpclient3test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Httpclient3test.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

            try {
                if (null != os) {
                    os.close();
                }
            } catch (IOException ex) {
                Logger.getLogger(Httpclient3test.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                if (null != is) {
                    try {
                        is.close();
                    } catch (IOException ex) {
                        Logger.getLogger(Httpclient3test.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        }
    }

}

依赖jar包

commons-codec-1.2.jar

commons-httpclient-3.1.jar

commons-logging-1.2.jar

 

posted @ 2018-03-22 13:58  yshy  阅读(4264)  评论(0编辑  收藏  举报