Handler子线程,Gson解析,get请求
## 代码要求和功能: Handler子线程,Gson解析,get请求。最终吐司。
**1:首先创建Htttp包:**
public static boolean isNotABoolean(Context context) {
//判断参数是否为空
if (context != null) {
//获取连接管理器
ConnectivityManager systemService = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络状态
NetworkInfo info = systemService.getActiveNetworkInfo();
if (info != null) {
//判断网络是否可用
return info.isAvailable();
}
}
return false;
}
**:2:请求数据,get请求**
public static String requesHttpGet(String s) {
try {
//设置url
URL url = new URL(s);
//打开链接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置get请求
connection.setRequestMethod("GET");
//设置链接主机时间
connection.setConnectTimeout(5000);
//设置从主机读取时间的超时时间
connection.setReadTimeout(5000);
//获取请求码(判断网络请求是否正确)
int code = connection.getResponseCode();
if (code == HttpURLConnection.HTTP_OK) {
//如果数据请求成功
//那就获取数据
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
//拼接字符串
StringBuilder builder = new StringBuilder();
//读取数据转换成字符串
String str = "";
while ((str = reader.readLine()) != null) {
//拼接成一行数据
builder.append(str);
}
//返回后拼接数据
return builder.toString();
}
//关闭连接
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
**MainActivity页面:开启子线程,写Handler,解析Gson,把数据传递给住线程**
**3://点击事件**
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//开启子线程
new Thread(){
@Override
public void run() {
super.run();
//写耗时操作(请求网络)
//判断网络状态
boolean notABoolean = Http.isNotABoolean(MainActivity.this);
//判断有没网络
if (notABoolean){
//有网络请求数据
String get = Http.requesHttpGet("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");
//Gson
Gson gson = new Gson();
Bean bean = gson.fromJson(get, Bean.class);
//把数据传递给住线程
Message message = new Message();
message.what=0;
message.obj=bean;
handler.sendMessage(message);
}
else{
handler.sendEmptyMessageDelayed(1,0);
}
}
}.start();
}
});
**4:写Handler**
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
Bean bean = (Bean) msg.obj;
Toast.makeText(MainActivity.this,""+bean.toString(),Toast.LENGTH_LONG).show();
break;
case 1:
Toast.makeText(MainActivity.this,"网络中断",Toast.LENGTH_LONG).show();
break;
}
}
};
图片
| | |
|–|--|
| | |