package Httpclient_test.Httpclient_test;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
public class DownLoadFrom {
/**
* 从网络Url中下载文件
* @param urlStr
* @param fileName
* @param savePath
* @throws IOException
*/
public static void g_downLoadFromUrl(String urlStr,Map<String ,String>headers,String fileName,String savePath) throws IOException{
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3*1000);
conn.setRequestMethod("GET");
//防止屏蔽程序抓取而返回403错误
for (String header : headers.keySet()) {
conn.setRequestProperty(header, headers.get(header));
}
//得到输入流
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");
}
/**
* 从网络Url中下载文件
* @param urlStr
* @param fileName
* @param savePath
* @throws IOException
*/
public static void p_downLoadFromUrl(String urlStr,Map<String ,String>headers,Map<String ,String>params,String fileName,String savePath) throws IOException{
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3*1000);
//输入参数
conn.setDoOutput(true);
//不使用缓存
conn.setUseCaches(false);
//防止屏蔽程序抓取而返回403错误
for (String header : headers.keySet()) {
conn.setRequestProperty(header, headers.get(header));
}
conn.setRequestMethod("POST");
if(params!=null && params.keySet().size()>0) {
StringBuilder sb=new StringBuilder();
for (String key : params.keySet()) {
sb.append(key+"="+URLEncoder.encode(params.get(key),"utf-8")+"&");
}
String param=sb.delete(sb.length()-1, sb.length()).toString();
//System.err.println(param);
DataOutputStream out=new DataOutputStream(conn.getOutputStream());
out.writeBytes(param);
out.flush();
out.close();
}
//得到输入流
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();
}
}