單例模式封裝網絡工具類
用途:通過封裝工具類和接口回調的方式來獲取網絡數據
//單例模式
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);
}
}
}