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, MapString, String params, String encode, OnResponseListener listener) { StringBuffer sb new StringBuffer(url); sb.append(?); if (params ! null !params.isEmpty()) { //增强for遍历循环添加拼接请求内容 for (Map.EntryString, 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, MapString, String params, String encode, OnResponseListener listener) { StringBuffer sb new StringBuffer(); if (params ! null !params.isEmpty()) { for (Map.EntryString, 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); }使用案例MapString, String map new HashMap();map.put(“extract”, encrypt);HttpUtils.getRequest(“http://tellsea.4kb.cn/arcFace/arcFace”, map, “utf-8”, new OnResponseListener() {Overridepublic void onSuccess(String response) {System.out.println(response);AjaxResult result new Gson().fromJson(response, AjaxResult.class);if (IntegerUtils.eq(result.getCode(), 200)) {// 处理逻辑业务} else {// 识别失败}}Overridepublic void onError(String error) {System.out.println(请求失败 error);}});Android开发的更多学习资料可以扫码免费领取Android基础课程资料包目录第一章 UI第一章 UI更有更多资料加微信免费领取

相关新闻

最新新闻

谷歌开源:Android中高级工程师进阶手册,首发

谷歌开源:Android中高级工程师进阶手册,首发

前言我希望我做一件事,是把大家带到最底层,最下面的一个地方,就像我们游泳一样,我带你到海洋最深处的一个地方,那里面有很多的宝藏。2022年是我做Android开发的第8年了,随着工作的不断深入,我越…

2026/8/27 18:58:31
Android面试遇到水货面试官,怎么办?

Android面试遇到水货面试官,怎么办?

一、剖析水货面试官 水货面试官 面试的时候,有很多人都会有个心理预期:面试我的人一定很厉害,很牛。 其实,现实不是这样的。 水货面试官的产生 公司中的技术人员配比,都是按比例的。比如人员配比是1:2&…

2026/8/27 18:58:31
无意中看到自己带的新员工工资比自己多9K,准备辞职了,就Android开发倒挂这么严重吗?

无意中看到自己带的新员工工资比自己多9K,准备辞职了,就Android开发倒挂这么严重吗?

乘兴裸辞心甚爽,面试工作屡遭难。 幸得大厂原题伴,点击关注莫偷懒。 最近网上有篇热帖引发了互联网圈内码农们的共鸣:随着2022届高校毕业生春招开启,职场新人接连入厂。大多数码农们也愈发感叹这种被新人薪资倒挂的现象是越来越严…

2026/8/27 18:58:31
结构体知识

结构体知识

1.结构体的定义&#xff1a;不同值的集合&#xff0c;这些值叫做成员变量。成员变量的也可以是不同类型&#xff0c;数组&#xff0c;指针&#xff0c;例age,sex,idear等等 2.结构体变量的定义 #include<stdio.h> struct Stu { char name[9]; int age[4]; char sex[5];…

2026/8/27 18:58:31
Kotlin 接口:从基础语法到高级实践

Kotlin 接口:从基础语法到高级实践

1. 引言接口是 Kotlin 面向对象编程中非常重要的抽象机制。它定义了一组行为规范&#xff0c;让不同的类可以按照统一的方式被调用。与 Java 相比&#xff0c;Kotlin 的接口在语法和功能上都有不少增强&#xff0c;例如支持属性声明、默认方法实现等。本文将通过丰富的代码实例…

2026/8/27 18:58:31
8位MCU+8引脚封装:低成本硬件设计的选型与实战指南

8位MCU+8引脚封装:低成本硬件设计的选型与实战指南

有段时间没聊芯片了&#xff0c;今天想聊聊一颗看起来很小、但出货量一直不小的东西&#xff1a;8-bit Microcontroller&#xff0c;也就是常说的8位单片机。更具体一点&#xff0c;是那种把内核、Flash、RAM、振荡器、复位电路全塞进8引脚封装里的型号。第一次接触这类芯片的人…

2026/8/27 18:53:31