网络请求的简单封装:
/**
* 类 名: MainActivity
*/
public class MainActivity extends AppCompatActivity {
private static final String TAG = “MainActivity”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void request(View v) {
HttpTask.getInstance().getStudentData(this, new HttpTask.OnNetResponseListener() {
@Override
public void onSuccess(String response) {
Log.d(TAG, "二次封完成:" + response);
}
@Override
public void onError(Exception e) {
Log.d(TAG, e.getMessage());
}
});
//发送网络请求
/* StringRequest request = new StringRequest("http://10.0.3.2:8080/Json/student", new Response.Listener<String>() {
@Override
public void onResponse(String s) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
});
RequestQueue queue = Volley.newRequestQueue(this);
queue.add(request);*/
}
}
/**
* 类 名: HttpTask
* 描 述: 网络任务工具类
*/
public class HttpTask {
private static final String TAG = “HttpTask”;
private static final String BASE_DOMAIN = “http://10.0.3.2:8080“;
private static final String URL_STUDENT = BASE_DOMAIN + “/Json/student”;
private static final String URL_COMPUTER = BASE_DOMAIN + “/Json/computer”;
private static HttpTask instance;
private HttpTask() {
}
public static HttpTask getInstance() {
if (instance == null) {
synchronized (HttpTask.class) {
if (instance == null) {
instance = new HttpTask();
}
}
}
return instance;
}
//二次封装,回调监听器不能使用默认的,自定义
public void getStudentData(Context context, final OnNetResponseListener listener) {
/* StringRequest request = new StringRequest(URL_STUDENT, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
listener.onSuccess(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
listener.onError(volleyError);
}
});
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(request);*/
sendRequest(URL_STUDENT, context, listener);
}
public void getComputerData(Context context, final OnNetResponseListener listener) {
/* StringRequest request = new StringRequest(URL_COMPUTER, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
listener.onSuccess(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
listener.onError(volleyError);
}
});
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(request);*/
sendRequest(URL_COMPUTER, context, listener);
}
private void sendRequest(final String url, Context context, final OnNetResponseListener listener) {
/*StringRequest request = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
listener.onSuccess(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
listener.onError(volleyError);
}
});
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(request);*/
//公司决定切换网络框架
new Thread(new Runnable() {
@Override
public void run() {
try {
URL uri = new URL(url);
URLConnection connection = uri.openConnection();
InputStream is = connection.getInputStream();
String result = IoUtil.convert2String(is);
listener.onSuccess(result);
} catch (Exception e) {
e.printStackTrace();
listener.onError(e);
}
}
}).start();
}
/**
* 自定义网络回调监听器
*/
public interface OnNetResponseListener {
void onSuccess(String response);
void onError(Exception e);
}
}
/**
* 类 名: IoUtil
*描 述: 工具类
*/
public class IoUtil {
public static void close(Closeable io) {
if (io != null) {
try {
io.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static String convert2String(InputStream io) {
// 流转成字符串
byte[] buffer = new byte[1024];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int len = -1;
try {
while ((len = io.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
return bos.toString();
}
}