public class Client {
public static void main(String[] args) {
try {
URL url = new URL("http://www.iteye.com/upload/logo/user/1177132/a7159cc1-b11a-3122-9a9d-5183d6c6ba99.jpg");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5 * 1000);
InputStream inputStream = connection.getInputStream();
byte[] tmp = new byte[1024];
int length;
OutputStream outputStream = new FileOutputStream("E:" + File.separator + "eee.jpg");
while ((length = inputStream.read(tmp)) != -1) {
outputStream.write(tmp, 0, length);
}
outputStream.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
圖片URL:
http://www.iteye.com/upload/l...
圖片有3K,但我下載后圖片只有2K而且圖片是錯(cuò)誤的這是為什么呢?
人生最曼妙的風(fēng)景,竟是內(nèi)心的淡定與從容!
你把程式碼改成這樣試試
public class Client {
public static void main(String[] args) {
try {
URL url = new URL("http://www.iteye.com/upload/logo/user/1177132/a7159cc1-b11a-3122-9a9d-5183d6c6ba99.jpg");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.19 Safari/537.36");
connection.setConnectTimeout(5 * 1000);
InputStream inputStream = connection.getInputStream();
byte[] tmp = new byte[1024];
int length;
OutputStream outputStream = new FileOutputStream("E:" + File.separator + "eee.jpg");
while ((length = inputStream.read(tmp)) != -1) {
outputStream.write(tmp, 0, length);
}
outputStream.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
不加UA下載下來的檔案其實(shí)是這樣的
outputStream.close()
之前,先調(diào)用outputStream.flush()
,這個(gè)方法能強(qiáng)制把輸出流緩衝全部寫出來。你前邊的都沒錯(cuò),就差一步了。
這是我用你的程式碼讀到的東西。
目標(biāo)禁止了,為connection增加一個(gè)user-agent屬性吧。