* 从网络获取数据
*
* @param url
*/
public void getDataFromServer(String url, HttpUtilsCallback callback) {
// 开启异步任务
new LoadDataTask(callback).execute(url);
}
class LoadDataTask extends AsyncTask<String, Void, String> {
private HttpUtilsCallback callback;
public LoadDataTask() {
}
public LoadDataTask(HttpUtilsCallback callback) {
this.callback = callback;
}
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
return inputStream2String(connection.getInputStream());
}
} catch (Exception e) {
callback.onError(e.getMessage());
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (!TextUtils.isEmpty(s)) {
callback.onSuccess(s);
} else {
callback.onError("没有收到数据");
}
}
}
/**
* 流转换成字符串
*
* @param inputStream
* @return
* @throws IOException
*/
private String inputStream2String(InputStream inputStream) throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int len = -1;
byte[] b = new byte[1024];
while ((len = inputStream.read(b)) != -1) {
outputStream.write(b, 0, len);
}
return new String(outputStream.toByteArray());
}
public interface HttpUtilsCallback {
void onSuccess(String result);
void onError(String errorMsg);
}
}