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://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();     
    }     
}    

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10556.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论