第一步:建立一个子线程
new Thread(){
}
第二步:重写thread的run()方法
第三步:确定网址path
String path = "192.168.1.100:8080/dd.jpg";
第四步:把网址封装成一个url对象
URL url = new URL(path);
获取客户端和服务器的连接对象,此时还没有建立连接,对连接对象进行初始化
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
设置请求方法,注意大写
conn.setRequestMethod("GET");
设置读取时间,如果超过5秒,连接超时
conn.setReadTimeout(5000);
设置连接时间,如果超过5秒,读取超时
conn.setConnectTimeout(5000);
发送请求,与服务器建立连接
conn.connect();
进行判断,如果响应码为200,说明请求成功
if(conn.getResponseCode()) == 200
获取服务器响应头中的流,流里的数据就是客户端请求的数据
InputStream is = conn.getInputStream();
读取出流里的数据,并构造成位图对象
Bitmap bm = BitmapFactory.decodeStream(is);
创建message对象
Message msg = new Message();
消息对象可以携带数据
msg.obj = bm;
msg.what = 1;
把消息发送至主线程的消息队列
handler.sendMessage(msg);
第五步:在主线程中创建一个handler对象
第六步:在主线程中修改UI
最后别忘类添加网络权限
public class MainActivity extends Activity {
private String path="http://192.168.1.100:8080/dd.jpg";
private ImageView iv;
private Bitmap bm;
private Message msg;
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg){
switch(msg.what){
case 1:
iv.setImageBitmap((Bitmap)msg.obj);
break;
case 0:
Toast.makeText(MainActivity.this, "请求失败", 0).show();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
}
public void click(View v){
new Thread(){
public void run(){
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");//必须大写
conn.setConnectTimeout(3000);
conn.setReadTimeout(3000);
conn.connect();
if(conn.getResponseCode()==200){
InputStream is = conn.getInputStream();
bm = BitmapFactory.decodeStream(is);
Message msg = new Message();
msg.obj=bm;
msg.what =1;
handler.sendMessage(msg);
}else{
Message msg = new Message();
msg.obj=bm;
msg.what =0;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
}
new Thread(){
}
第二步:重写thread的run()方法
第三步:确定网址path
String path = "192.168.1.100:8080/dd.jpg";
第四步:把网址封装成一个url对象
URL url = new URL(path);
获取客户端和服务器的连接对象,此时还没有建立连接,对连接对象进行初始化
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
设置请求方法,注意大写
conn.setRequestMethod("GET");
设置读取时间,如果超过5秒,连接超时
conn.setReadTimeout(5000);
设置连接时间,如果超过5秒,读取超时
conn.setConnectTimeout(5000);
发送请求,与服务器建立连接
conn.connect();
进行判断,如果响应码为200,说明请求成功
if(conn.getResponseCode()) == 200
获取服务器响应头中的流,流里的数据就是客户端请求的数据
InputStream is = conn.getInputStream();
读取出流里的数据,并构造成位图对象
Bitmap bm = BitmapFactory.decodeStream(is);
创建message对象
Message msg = new Message();
消息对象可以携带数据
msg.obj = bm;
msg.what = 1;
把消息发送至主线程的消息队列
handler.sendMessage(msg);
第五步:在主线程中创建一个handler对象
第六步:在主线程中修改UI
最后别忘类添加网络权限
public class MainActivity extends Activity {
private String path="http://192.168.1.100:8080/dd.jpg";
private ImageView iv;
private Bitmap bm;
private Message msg;
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg){
switch(msg.what){
case 1:
iv.setImageBitmap((Bitmap)msg.obj);
break;
case 0:
Toast.makeText(MainActivity.this, "请求失败", 0).show();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
}
public void click(View v){
new Thread(){
public void run(){
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");//必须大写
conn.setConnectTimeout(3000);
conn.setReadTimeout(3000);
conn.connect();
if(conn.getResponseCode()==200){
InputStream is = conn.getInputStream();
bm = BitmapFactory.decodeStream(is);
Message msg = new Message();
msg.obj=bm;
msg.what =1;
handler.sendMessage(msg);
}else{
Message msg = new Message();
msg.obj=bm;
msg.what =0;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
}