网络请求的简单封装: /** * 类 名: 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(); }}