在我们写代码的时候,可能要写几百行甚至几千行,所以我们的代码尽量要简洁,
所以我们用到了工具类,只要传入url地址,就能传回我们想要的数据,然后能够
一次书写,多次使用,能够大大减少代码量,提高我们的工作效率,接下来就直接上干货
一,首先,我们创建一个类 HttpUtils
public class HttpUtils {
private static final int SUCCESS=0;
private MyHandler myHandler=new MyHandler();
//单利模式
private static HttpUtils httpUtils=new HttpUtils();
private HttpUtilsListener httpUtilsListener;
public static HttpUtils getInstance(){
if(httpUtils==null){
httpUtils=new HttpUtils();
}
return httpUtils;
}
//封装get
public void get(final String url){
new Thread(){
@Override
public void run() {
//进行网络请求
try {
URL url1 = new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();
urlConnection.setConnectTimeout(3000);
if(urlConnection.getResponseCode()==200){
InputStream inputStream = urlConnection.getInputStream();
String s = StreamToString(inputStream);
//使用handler发送数据
Message msg=myHandler.obtainMessage();
msg.what=SUCCESS;
msg.obj=s;
myHandler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
//stream转成string
private String StreamToString(InputStream stream) {
StringBuilder stringBuilder = new StringBuilder();
String str;
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
try {
while ((str=reader.readLine())!=null){
stringBuilder.append(str);
}
} catch (Exception e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
//使用Handler 处理线程问题
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case SUCCESS:
String s= (String) msg.obj;
Log.i("zzz",s);
httpUtilsListener.getDataSuccess(s);
break;
}
}
}
//接口回调
public interface HttpUtilsListener{
void getDataSuccess(String s);
}
//外部访问的方法
public void setHttpUtilsListener(HttpUtilsListener add){
httpUtilsListener=add;
}
}
在工具类中我们要注意的是接口回调的使用,记得声明 httpUtilsListener;
二,然后我们要在Activity中调用,就像我们给控件设置监听一样,首先实例化我们创建的对象
传入url地址
private String myurl="http://api.tianapi.com/huabian/?key=fd364dc1b4af6c87a75045aaf1f9224a&num=10";
调用我们外部访问的方法,然后会重写
getDataSuccess
HttpUtils httpUtils=HttpUtils.getInstance(); httpUtils.get(myurl); httpUtils.setHttpUtilsListener(new HttpUtils.HttpUtilsListener() { @Override public void getDataSuccess(String s) { } });
接下来的操作,你们懂得