网络编程-URL与HttpURLConnect类
认真阅读下列要求,完成代码编写:
-
提交任务时,将本次任务中的子任务同时进行提交。
-
提交代码时,请将代码放入Java代码框中提交。
-
提交代码时要保证代码简洁及对齐,可以合理的进行缩进及换行。(影响成绩评定)
使用URL与HttpURLConnect类下载网络上的两张图片,要求启动2个线程,分别下载一张图片。
提示:
-
使用Thread或Runnable方法实现多线程,自定义的类中需包含2个属性,1个是图片的地址,另一个是存储位置
-
下载图片的操作在线程中实现
package homework2;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.logging.Logger;
import javax.net.ssl.HttpsURLConnection;
import javax.xml.ws.Response;
public class URLDemo extends Thread{
private String imgUrl;//图片地址
private String location;//图片存储位置
public URLDemo(String imgUrl,String location) {
this.imgUrl=imgUrl;
this.location = location;
}
@Override
public void run() {
// 图片下载
try {
FileOutputStream fos = new FileOutputStream(new File(location));
URL url = new URL(imgUrl);
// 打开连接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// 设置网络链接超时时间
conn.setConnectTimeout(3000);
// 设置应用程序要从网络连接读取数据
conn.setDoInput(true);
// 设置请求方式
conn.setRequestMethod("GET");
//// 发送请求
// conn.connect();
// 获取请求返回码
int code = conn.getResponseCode();
if(code == 200) {
InputStream is = conn.getInputStream();
;
byte[] b = new byte[1024];
int len =0;
while((len = is.read(b)) > 0) {
fos.write(b,0,len);
}
fos.close();
}
} catch ( IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.run();
}
}
package homework2;
public class Test {
public static void main(String[] args) {
String imgUrl1 ="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png";
String imgUrl2 = "https://dss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=664006419,3264023644&fm=26&gp=0.jpghttp://www.edu2act.cn/";
String location1="D:\\Demo\\baidu.png";
String location2="D:\\Demo\\baidu2.jpg";
new URLDemo(imgUrl1,location1).start();
new URLDemo(imgUrl2,location2).start();
}
}