自定义网络请求

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值