java 网络框架_java简单的网络框架封装

1,先写好接口:

public interface RequestCallback {

//请求成功的方法

void success(String data);

//请求失败的方法

void fail(String data);

}

如果有兴趣的朋友可以加个过程的方法。

2,开始写网络请求的逻辑方法:

get方法

private static final String doGet(String url) throws IOException {

//创建一个URL对象

URL reUrl = new URL(url);

//打开一个连接

HttpURLConnection conn = (HttpURLConnection) reUrl.openConnection();

conn.setRequestMethod("GET");

conn.setDoInput(true);

//设置连接超时的时间

conn.setConnectTimeout(5000);

//设置读取超时的时间

conn.setReadTimeout(5000);

//连接

conn.connect();

//获取返回码

int code = conn.getResponseCode();

if (code == 200) {

//获取输入流

InputStream inputStream = conn.getInputStream();

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

String line = "";

StringBuffer buffer = new StringBuffer();

//读取一行

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

buffer.append(line);

}

//请求成功

String result = buffer.toString();

inputStream.close();

conn.disconnect();

reader.close();

return result;

}

return null;

}

post方法:

private static final String doPost(String url, Map params) throws IOException {

//先处理参数

//把Map转化为Set集合

Set> entrySet = params.entrySet();

//从Set里获取迭代器

Iterator> iterator = entrySet.iterator();

StringBuffer buffer = new StringBuffer();

//迭代Set,进行字符串连接

while (iterator.hasNext()) {

Map.Entry entry = iterator.next();

String key = entry.getKey();

//添加参数名称

buffer.append(key);

//添加"="

buffer.append("=");

//获取参数值

String value = entry.getValue();

//添加参数值

buffer.append(value);

//添加"&"

buffer.append("&");

}

String paramsString = buffer.toString();

//在连接完后,最后面多了一个“&”

paramsString = paramsString.substring(0, paramsString.length() - 1);

try {

//创建一个URL对象

URL reUrl = new URL(url);

//打开一个连接

HttpURLConnection conn = (HttpURLConnection) reUrl.openConnection();

//POST请求必须要加上这一句,必须大写

conn.setRequestMethod("POST");

conn.setDoInput(true);

conn.setDoOutput(true);

//不能使用缓存

conn.setUseCaches(false);

//设置连接超时的时间

conn.setConnectTimeout(20000);

//设置读取超时的时间

conn.setReadTimeout(20000);

//连接

conn.connect();

//获取一个输出流

OutputStream outputStream = conn.getOutputStream();

//把参数写进去

outputStream.write(paramsString.getBytes());

outputStream.flush();

//获取返回码

int code = conn.getResponseCode();

if (code == 200) {

//获取输入流

InputStream inputStream = conn.getInputStream();

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

String line = "";

StringBuffer resultBuffer = new StringBuffer();

//读取一行

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

resultBuffer.append(line);

}

//请求成功

String result = resultBuffer.toString();

inputStream.close();

conn.disconnect();

reader.close();

outputStream.close();

return result;

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

3,接着开始封装方法回调:

get请求封装

public static void getRequest(String url,RequestCallback rc){

new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

try {

String data=doGet(url);

rc.success(data);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

rc.fail(e.toString());

}

}

}).start();

}

post请求封装

public static void postRequest(String url,Map map,RequestCallback rc){

new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

try {

String data=doPost(url, map);

rc.success(data);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

rc.fail(e.toString());

}

}

}).start();

}

4,开始调用网络请求

2a9b072cd20033abf806763e8e6ac688.png

最后:一个简单的网络请求框架封装完成,对于初学者来说用来装B最好不过,如果有不足之处望各位大神指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值