当前位置: 首页 > article >正文

Android——网络请求

  • get 请求
public static String doGeg() {
        String result = "";
        BufferedReader reader;
        try {
            // 1.建立连接
            HttpURLConnection httpURLConnection = null;
            String url = "https://www.baidu.com";
            URL requestUrl = new URL(url);
            httpURLConnection = (HttpURLConnection) requestUrl.openConnection();
            httpURLConnection.setRequestMethod("GET");
            httpURLConnection.setConnectTimeout(5000);
            httpURLConnection.connect();

            // 2.获取二进制流
            InputStream inputStream = httpURLConnection.getInputStream();

            // 3.将二进制流包装
            reader = new BufferedReader(new InputStreamReader(inputStream));

            // 从Buffer reader中读取string字符串
            String line;
            StringBuilder builder = new StringBuilder();

            while ((line = reader.readLine()) != null) {
                builder.append(line);
                builder.append("\n");
            }

            if (builder.length() == 0) {
                return null;
            }
            result = builder.toString();
        } catch (Exception e) {
            Log.d("EEEE", "1");
            e.printStackTrace();
        }
        return result;
    }
  • post 请求
public static boolean doPost(String utlStr) {
        HttpURLConnection urlConnection = null;
        OutputStream outputStream = null;
        boolean result = false;

        try {
            URL url = new URL(utlStr);

            // 1.打开连接
            urlConnection = (HttpURLConnection) url.openConnection();
            // 2.准备请求数据
            Map<String, String> paramMap = new HashMap<>();
            paramMap.put("userName", "zs");
            paramMap.put("pass", "123");
            String paramData = paramMapToString(paramMap);

            // 3.设置连接信息
            urlConnection.setRequestMethod("POST");
            urlConnection.setConnectTimeout(5000);
            urlConnection.setRequestProperty("Content-Length", String.valueOf(paramData.length()));

            // 设置conn可以向服务端输出的内容
            urlConnection.setDoOutput(true);

            // 4.获取输出流,并进行输出
            outputStream = urlConnection.getOutputStream();
            outputStream.write(paramData.getBytes());

            // 5.获取服务端的响应结果
            int code = urlConnection.getResponseCode();
            if (code == 200) {
                result = true;
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (urlConnection != null) {
                urlConnection.disconnect();
            }

            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }

将Map转为字符串

    public static String paramMapToString(Map<String, String> paramMap) {
        StringBuilder sb = new StringBuilder();
        Set<Map.Entry<String, String>> entries = paramMap.entrySet();
        for (Map.Entry<String, String> entry : entries) {
            sb.append(entry.getKey())
                    .append("=")
                    .append(entry.getValue())
                    .append("&");
        }
        // 去掉最后一个&
        sb.deleteCharAt(sb.length() - 1);

        return sb.toString();
    }

处理JSON

    public static void handleJson(String jsonStr) {
        try {
            JSONObject jsonObject = new JSONObject(jsonStr);
            String name = jsonObject.optString("name");
            Log.d("AAAA", name);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

案例代码


http://www.kler.cn/a/384593.html

相关文章:

  • ubuntu 20.04 NVIDIA驱动、cuda、cuDNN安装
  • 分布式——BASE理论
  • k8s 上如何跑 Dolphins 模型
  • 信号-2-信号捕捉
  • 【网络原理】关于HTTP状态码以及请求的构造的哪些事
  • Unity中RTS游戏的设计模式处理: 游戏中的对象选择和命令委托的基本框架
  • 大模型落地场景及价值思考
  • ubuntu 20.04 安装使用 nvidia gdrcopy
  • 使用Matlab神经网络工具箱
  • 智能化运维的未来:AI和机器学习在运维中的应用
  • 内网学习一:windows基础
  • Python进程管理:创建和协调多进程的深入指南
  • 远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
  • Hive 操作基础(进阶篇☝️)
  • Spring框架之单例模式 (Singleton Pattern)
  • Java对象、类、接口——针对实习面试
  • 探索Python视频处理的瑞士军刀:ffmpeg-python库
  • 在JS中, 0 == [0] 吗
  • 5g通信系统用到的crc码
  • 解析Eureka的架构
  • 996引擎 - 活捉NPC
  • 如何开发查找附近地点的微信小程序
  • 书生实战营第四期-基础岛第三关-浦语提示词工程实践
  • SSH实验4允许特定用户ssh登录
  • 又发现了Mac妙控鼠标的新使用方法
  • Jenkins系列