网络图片查看
客户端发送http请求至服务器,如果请求成功,响应码为200,服务器会通过流向客户端返回请求的数据 主线程阻塞,应用会停止刷新界面,停止响应用户任何操作,用户体验非常差 耗时操作不要写在主线程
ANR异常
Application not responding
消息队列
只有主线程可以刷新ui 主线程创建时,同时也会创建MessageQueue(消息队列)和Looper(消息轮询器)对象 如果需要使用消息队列机制,程序员需要自行创建Handler(消息处理器) 轮询器不断检测消息队列中是否有消息,如果有,就会把消息取出,交给Handler对象 Handler对象拿到消息之后,就会在主线程执行handleMessage() 也就是说子线程,只要往消息队列中发送消息,主线程立刻执行handleMessage()
请求文本信息
提交数据
get方式提交表单
数据拼接在url后面写给服务器 表单数据需要经过url编码
post方式提交表单
package com.tz.melody;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button bt;
private ImageView iv;
Handler handler = new Handler(){
public void handleMessage (android.os.Message msg) {
switch (msg.what) {
case 1 :
iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap((Bitmap) msg.obj);
break ;
case 2 :
Toast.makeText(MainActivity.this , "请求失败" , 0 ).show();
break ;
}
}
};
protected void onCreate (Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click (View v){
Thread t = new Thread(){
public void run () {
super .run();
String path = "http://192.168.1.106/dd.jpg" ;
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET" );
conn.setReadTimeout(8000 );
conn.setReadTimeout(8000 );
conn.connect();
if (conn.getResponseCode() == 200 ){
InputStream is = conn.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(is);
Message msg = new Message();
msg.obj = bm;
msg.what = 1 ;
handler.sendMessage(msg);
}else {
handler.sendEmptyMessage(2 );
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
};
t.start();
}
}