android get 封装,封装httpUtil类包括getpost的请求

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

public class HttpUtil {

//在activity中调用此方法,请求数据,并获取返回的数据;

public void getDataFromServer(Context context, RequestBean bean, DataCallBack callBack) {

MyHandler handler = new MyHandler(context, callBack);

/***** 起子线程从网络开始获取数据******/

MyTask task = new MyTask(handler, bean);

//获取CPU数量

int cpunum = Runtime.getRuntime().availableProcessors();

//线程池实例化

ExecutorService service = Executors.newScheduledThreadPool(cpunum + 1);

//将子线程放入线程池执行;

service.execute(task);

}

public abstract interface DataCallBack {

public abstract void prosseData(String json);

}

//网络请求,开启子线程

class MyTask extends Thread {

private MyHandler handler;

private RequestBean requestBean;

public MyTask(MyHandler handler, RequestBean bean) {

this.handler = handler;

requestBean = bean;

}

@Override

public void run() {

super.run();

try {

//网络请求,HttpURLConnection

URL url = new URL(requestBean.url);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

//判断是否是post请求;

if (requestBean.method.equals("POST")) {

//设置请求方法;默认是get请求;

connection.setRequestMethod(requestBean.method);

//允许写入数据;

connection.setDoOutput(true);

//获取输出流,写入value;添加请求接口时需要追加的参数;

OutputStream os = connection.getOutputStream();

os.write(requestBean.value.getBytes());

}

//根据请求结果,对请求回来的数据进行处理;

StringBuilder builder = new StringBuilder();

//获取网络请求状态码;

int code = connection.getResponseCode();

if (code == HttpURLConnection.HTTP_OK) {//返回成功、

//请求结果从输入流里获取;

InputStream is = connection.getInputStream();

String str;

BufferedReader reader = new BufferedReader(new InputStreamReader(is));

while ((str = reader.readLine()) != null) {

builder.append(str);

}

Log.e("http-util:getdata", builder.toString());

}

//使用handler发送请求回来的数据到主线程;

Message msg = Message.obtain();

//请求结果放入object;如果请求成功,有数据;如果请求失败(状态码不为200,此时object为"");

msg.obj = builder.toString();

//回传状态码,用于提醒用户;

msg.what = code;

handler.sendMessage(msg);

} catch (Exception e) {

e.printStackTrace();

}

}

}

//更新UI回传数据;

class MyHandler extends Handler {

private Context context;//用于toast提示;

private DataCallBack callBack;

//如果没有toast提示,context可不传;

public MyHandler(Context context, DataCallBack callBack) {

this.context = context;

this.callBack = callBack;

}

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

int what = msg.what;//获取网络连接状态码;

if (what == 200) {//数据接口返回数据成功

String result = (String) msg.obj;//result是从服务器端获取的json字符串;

callBack.prosseData(result);//调用接口内需要实现的方法,方法内的代码都在此处执行;

} else {

Toast.makeText(context, "请求失败!", Toast.LENGTH_SHORT).show();

}

}

}

}

public class RequestBean {

//请求网络接口需要用到的参数;

public String url="";

public String value="";

public String method="GET";

//GET请求

public RequestBean(String url) {

this.url = url;

}

//post请求

public RequestBean(String url, String value, String method) {

this.url = url;

this.value = value;

this.method = method;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,Android 中可以使用 HttpURLConnection 来进行 HTTP 请求的发送,以下是一个简单的封装示例: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class HttpUtil { public static String sendHttpRequest(String urlStr, String method, String data) { HttpURLConnection connection = null; BufferedReader reader = null; try { URL url = new URL(urlStr); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(method); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); connection.setDoInput(true); connection.setDoOutput(true); if (method.equals("POST")) { OutputStream outputStream = connection.getOutputStream(); outputStream.write(data.getBytes()); outputStream.flush(); outputStream.close(); } InputStream inputStream = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } return response.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } if (connection != null) { connection.disconnect(); } } return null; } } ``` 您可以使用 `sendHttpRequest` 方法来发送 HTTP 请求,需要传入请求的 URL、请求方法(GET 或 POST)以及请求数据(如果是 POST 请求)。方法会返回响应的数据。例如,发送一个 GET 请求: ```java String response = HttpUtil.sendHttpRequest("http://www.example.com/api", "GET", null); ``` 发送一个 POST 请求: ```java String data = "param1=value1&param2=value2"; String response = HttpUtil.sendHttpRequest("http://www.example.com/api", "POST", data); ``` 当然,上面的代码只是一个简单的封装示例,实际应用中需要进行更多的参数校验、错误处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值