news 2026/8/27 18:48:24

Android 封装 Http 请求工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android 封装 Http 请求工具

Android 封装 Http 请求工具

工具类

import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; /** * http 请求工具 * * @author Tellsea * @date 2021-11-24 */ public class HttpUtils { /** * get请求封装 * * @param url * @param params * @param encode * @param listener */ public static void getRequest(String url, Map<String, String> params, String encode, OnResponseListener listener) { StringBuffer sb = new StringBuffer(url); sb.append("?"); if (params != null && !params.isEmpty()) { //增强for遍历循环添加拼接请求内容 for (Map.Entry<String, String> entry : params.entrySet()) { sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } sb.deleteCharAt(sb.length() - 1); if (listener != null) { try { URL path = new URL(sb.toString()); if (path != null) { HttpURLConnection con = (HttpURLConnection) path.openConnection(); //设置请求方式 con.setRequestMethod("GET"); //链接超时3秒 con.setConnectTimeout(3000); con.setDoOutput(true); con.setDoInput(true); OutputStream os = con.getOutputStream(); os.write(sb.toString().getBytes(encode)); os.close(); //应答码200表示请求成功 if (con.getResponseCode() == 200) { onSuccess(encode, listener, con); } } } catch (Exception error) { error.printStackTrace(); onError(listener, error); } } } } /** * POST请求 * * @param url * @param params * @param encode * @param listener */ public static void postRequest(String url, Map<String, String> params, String encode, OnResponseListener listener) { StringBuffer sb = new StringBuffer(); if (params != null && !params.isEmpty()) { for (Map.Entry<String, String> entry : params.entrySet()) { sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } sb.deleteCharAt(sb.length() - 1); } if (listener != null) { try { URL path = new URL(url); if (path != null) { HttpURLConnection con = (HttpURLConnection) path.openConnection(); con.setRequestMethod("POST"); //设置请求方法POST con.setConnectTimeout(3000); con.setDoOutput(true); con.setDoInput(true); byte[] bytes = sb.toString().getBytes(); OutputStream outputStream = con.getOutputStream(); outputStream.write(bytes); outputStream.close(); if (con.getResponseCode() == 200) { onSuccess(encode, listener, con); } } } catch (Exception e) { e.printStackTrace(); onError(listener, e); } } } private static void onError(OnResponseListener listener, Exception onError) { listener.onError(onError.toString()); } private static void onSuccess(String encode, OnResponseListener listener, HttpURLConnection con) throws IOException { InputStream inputStream = con.getInputStream(); //创建内存输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = 0; byte[] bytes = new byte[1024]; if (inputStream != null) { while ((len = inputStream.read(bytes)) != -1) { baos.write(bytes, 0, len); } String str = new String(baos.toByteArray(), encode); listener.onSuccess(str); } } }
/** * 请求回调 * * @author Tellsea * @date 2021-11-24 */ public interface OnResponseListener { void onSuccess(String response); void onError(String error); }

使用案例

Map<String, String> map = new HashMap<>();

map.put(“extract”, encrypt);

HttpUtils.getRequest(“http://tellsea.4kb.cn/arcFace/arcFace”, map, “utf-8”, new OnResponseListener() {

@Override
public void onSuccess(String response) {
System.out.println(response);
AjaxResult result = new Gson().fromJson(response, AjaxResult.class);
if (IntegerUtils.eq(result.getCode(), 200)) {
// 处理逻辑业务
} else {
// 识别失败
}
}
@Override
public void onError(String error) {
System.out.println("请求失败:" + error);
}

});

Android开发的更多学习资料可以扫码免费领取!

Android基础课程资料包

目录

第一章 UI

第一章 UI

更有更多资料,加微信免费领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 18:48:20

Android开发 GradientDrawable详解

前言 GradientDrawable 支持渐变色的Drawable&#xff0c;与shapeDrawable在画型上是类似的&#xff0c;多了支持渐变色。代码上的GradientDrawable比在xml里的shape下gradient属性强大的多&#xff0c;因为shape下gradient属性只支持三色阶渐变&#xff0c;而GradientDrawable…

作者头像 李华
网站建设 2026/8/27 18:44:30

Go 编译过程全景

Go 编译过程全景一、从 go build 到可执行文件&#xff1a;一张全景图 你敲下 go build&#xff0c;几秒钟后一个静态二进制文件就出现了。但在这几秒钟里发生了什么&#xff1f;Go 编译器&#xff08;gc&#xff0c;注意不是 GC 垃圾回收&#xff0c;而是 Go Compiler 的缩写&…

作者头像 李华
网站建设 2026/8/27 18:41:47

基于DEAP数据集的脑电情绪识别:从特征工程到深度学习实战

简介&#xff1a;脑机接口&#xff08;BCI&#xff09;与情感计算是人工智能与神经科学交叉的前沿领域&#xff0c;其核心目标之一是让机器理解人类情绪。实现这一目标的关键在于从生理信号中提取有效的情绪表征&#xff0c;其中脑电图&#xff08;EEG&#xff09;因其高时间分…

作者头像 李华
网站建设 2026/8/27 18:40:29

鸿蒙开发入门:快速修复命令行调试开发指导

快速修复命令行调试开发指导 当前阶段&#xff0c;HarmonyOS为开发者提供了命令行的调试开发工具可供使用。比如&#xff0c;包名为com.ohos.quickfix的示例应用&#xff0c;版本号为1000000。该应用的当前版本运行中有某问题需要修复&#xff0c;此时&#xff0c;开发者可参考…

作者头像 李华
网站建设 2026/8/27 18:37:55

Android还得看Framework开发,你觉得呢?

在Android开发领域&#xff0c;主要有三个方向&#xff1a;应用开发、框架开发和Linux驱动开发。每个方向都有其独特的特点和就业前景。 应用开发&#xff08;App Development&#xff09; 是人数最多、门槛最低的领域。由于这个领域的技术要求相对较低&#xff0c;吸引了大量的…

作者头像 李华