通过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

上一篇:Java面向对象的编程


下一篇:html5 canvas画图之图形随拖动而复制(有操作指示)