单例模式封装网络工具类
用途:通过封装工具类和接口回调的方式来获取网络数据
package jiangguxu.example.com.myapplication.net;
import android.os.AsyncTask;
import com.google.common.io.CharStreams;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
//单例模式
public class NetUtils {
private static final NetUtils ourInstance = new NetUtils();
public static NetUtils getInstance() {
return ourInstance;
}
private NetUtils() {
}
public void getDataFromService(String url){
//向LoadData传递参数
new LoadData().execute(url);
}
//定义接口,接口回调
public interface NetCallBack{
void onSuccess(String result);
}
private NetCallBack netCallBack;
public void setNetCallBack(NetCallBack netCallBack) {
this.netCallBack = netCallBack;
}
//具体实现解析的方法(此处直接返回了json)
class LoadData extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setConnectTimeout(5000);
if (connection.getResponseCode()==HttpURLConnection.HTTP_OK){
return CharStreams.toString(new InputStreamReader(connection.getInputStream()));
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
netCallBack.onSuccess(s);
}
}
}