zoukankan      html  css  js  c++  java
  • 通过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

  • 相关阅读:
    postgreSQL官网对json的一些说明
    postgreSQL_jsonb中某一个键值对的修改操作
    redis基础
    failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
    012、时间、日期控件
    011、AutoCompleteTextView控件,具有自动提示功能的菜单
    010、Spinner使用
    009、使用ViewFlipper实现左右滑动事件
    008、不同程序的彼此调用
    007、判断手机操作系统是否允许运行程序
  • 原文地址:https://www.cnblogs.com/yshyee/p/8623295.html
Copyright © 2011-2022 走看看