返回顶部

收藏

Java通过http请求保存远程图片至本地

更多
import java.io.ByteArrayOutputStream;    
import java.io.File;    
import java.io.FileOutputStream;    
import java.io.InputStream;    
import java.net.HttpURLConnection;    
import java.net.URL;    
public class ImageRequest {    
    /**  
     * @param args  
     */    
    public static void main(String[] args) throws Exception {    
        int one=1;  
        int two=1;  
        while(true){  

        //new一个URL对象    
        URL url = new URL("http://www.open-open.com/code/images/opencode.jpg");    
        //打开链接    
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();    
        //设置请求方式为"GET"    
        conn.setRequestMethod("GET");    
        //超时响应时间为5秒    
       // conn.setConnectTimeout(5 * 1000);    
        //通过输入流获取图片数据    
        InputStream inStream=null;  
        try{  
          inStream = conn.getInputStream();    
        }catch (Exception e) {  
               System.out.println("Error"+one+","+two);  
            System.out.println("///");  
            if(two==20){  
                one++;  
                two=1;  
            }else{  
                two++;  
            }  
            if(one==21){  
                return;  
            }  
            continue;  
        }  
        //得到图片的二进制数据,以二进制封装得到数据,具有通用性    
        byte[] data = readInputStream(inStream);    
        //new一个文件对象用来保存图片,默认保存当前工程根目录    
        File imageFile = new File(one+","+two+".jpg");    
        System.out.println(one+","+two);  
        //创建输出流    
        FileOutputStream outStream = new FileOutputStream(imageFile);    
        //写入数据    
        outStream.write(data);    
        //关闭输出流    
        outStream.close();    

        if(two==20){  
            one++;  
            two=1;  
        }else{  
            two++;  
        }  
        if(one==20){  
            return;  
        }  

        }  

    }    
    public static byte[] readInputStream(InputStream inStream) throws Exception{    
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();    
        //创建一个Buffer字符串    
        byte[] buffer = new byte[1024];    
        //每次读取的字符串长度,如果为-1,代表全部读取完毕    
        int len = 0;    
        //使用一个输入流从buffer里把数据读取出来    
        while( (len=inStream.read(buffer)) != -1 ){    
            //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度    
            outStream.write(buffer, 0, len);    
        }    
        //关闭输入流    
        inStream.close();    
        //把outStream里的数据写入内存    
        return outStream.toByteArray();    
    }    
}    

标签:java

收藏

0人收藏

支持

0

反对

0

发表评论