通过HttpURLConnection获取图片以及inputStream

import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpGetImg {
    public void getImg(){
        try {
            String imgAddress = "http://cdn.haoceyan.com/584_GLTTLXJ6_1025U4B5YFL7_1_1?imageMogr/auto-orient/crop/!106x28a60a441/quality/80"
            URL url = new URL(imgAddress);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            // 设置连接超时时间
            conn.setConnectTimeout(3000);
            InputStream inputStream = null;

// 正常响应时获取输入流, 在这里也就是图片对应的字节流
            if (conn.getResponseCode() == 200) {
                inputStream = conn.getInputStream();
                System.out.println(inputStream.available());
            }

            byte[] buffer = new byte[1024];
            int length = 0;

            // 这里是输出到工程根目录下
            FileOutputStream fileOutputStream = new FileOutputStream("d://myavatar.jpg");

            // 将输入流循环写到关联文件的输出流
            while ((length = inputStream.read(buffer)) > 0) {
                fileOutputStream.write(buffer, 0, length);
            }
            System.out.println("end");
// 释放资源
            inputStream.close();
            fileOutputStream.close();
        }catch (Exception e) {
            e.printStackTrace();
        }

    }
}
在Java中,使用`HttpURLConnection`下载图片通常涉及到以下几个步骤: 1. 创建`URL`对象:首先,你需要创建一个`URL`对象,代表你想下载的图片地址。 ```java URL imageUrl = new URL("http://example.com/image.jpg"); ``` 2. 打开连接:使用`openConnection()`方法建立到服务器的连接,并将其转换为`HttpURLConnection`。 ```java HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); ``` 3. 设置请求方法和允许保存:这里通常我们设置请求方法为`GET`,并允许输入流(`InputStream`)以保存图片。 ```java conn.setRequestMethod("GET"); conn.setDoOutput(true); // 如果是POST请求则需设为false conn.connect(); ``` 4. 获取输入流:检查连接状态,如果成功,则获取`InputStream`。 ```java int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream inputStream = conn.getInputStream(); } else { throw new RuntimeException("Failed : HTTP error code : " + responseCode); } ``` 5. 写入文件:将输入流读取的内容写入本地文件。这一步可以使用`FileOutputStream`或者`BufferedOutputStream`。 ```java File file = new File("image.jpg"); FileOutputStream outputStream = new FileOutputStream(file); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } outputStream.flush(); outputStream.close(); inputStream.close(); ``` 6. 关闭连接:最后别忘了关闭所有连接。 ```java conn.disconnect(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值