Java http请求保存图片至本地

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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://sv3.map.soso.com/tile?svid=10143701130223133351200&x="+one+"&y="+two+"&from=web&level=1&v=2");   
        //打开链接   
        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();   
    }   
}