首页 > 编程语言 >50.Android网络编程的补充

50.Android网络编程的补充

时间:2024-06-01 10:21:40浏览次数:12  
标签:java String 编程 50 result import new Android coon

主要分为三点补充

1.get和post方式请求访问网络
记得一定要处理异常
package com.example.four_content;

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.ProtocolException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Map;

public class Get_Post_Activity {
    public static String get(String path) {
        String result = null;
        try {
            URL url = new URL(path);    //创建url对象
            HttpURLConnection coon = (HttpURLConnection) url.openConnection();
            coon.setRequestMethod("GET");   //设置请求方式
            coon.setConnectTimeout(5000);   //设置超时时间
            int responseCode = coon.getResponseCode();  //获取状态码
            if (responseCode == 200) {
                InputStream is = coon.getInputStream(); //获取服务器返回的输入流
                //使用InputStreamReader和BufferedReader来读取输入流的内容 这里还指定了字符编码为UTF-8
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
                StringBuilder stringBuilder = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    //使用StringBuilder来拼接从输入流中读取的每一行内容。每读取一行,都会在其后添加系统行分隔符
                    stringBuilder.append(line).append(System.lineSeparator());
                }
                result = stringBuilder.toString();
            }

        } catch (ProtocolException e) {
            throw new RuntimeException(e);
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return result;
    }


    public static String post(String path, Map<String, Object> map) {
        String result = null;
        try {
            URL url = new URL(path);
            HttpURLConnection coon = (HttpURLConnection) url.openConnection();
            coon.setRequestMethod("POST");
            coon.setConnectTimeout(5000);


            String data = "";
            //设置Content-Type 用于指定提交的实体数据的内容类型
            coon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            //设置Content-Length提交数据的长度
            coon.setRequestProperty("Content-Length", data.length() + "");
            coon.setDoOutput(true);     //设置允许向外写数据
            //获取输出流 向服务器写数据
            OutputStream outputStream = coon.getOutputStream();
            outputStream.write(data.getBytes());

            int responseCode = coon.getResponseCode();
            if (responseCode == 200) {
                InputStream is = coon.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
                StringBuilder stringBuilder = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    stringBuilder.append(line).append(System.lineSeparator());
                }
                result = stringBuilder.toString();
            }

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return result;
    }
}
  new Thread() {
            @Override
            public void run() {
                    //                HashMap<String, Object> objectObjectHashMap = new HashMap<>();
                    //                String s = Get_Post_Activity.post("http://本机ip地址:8080/Chapter09/goods/goods_list_data.json",objectObjectHashMap);
                    String s = Get_Post_Activity.get("http://本机ip地址:8080/Chapter09/goods/goods_list_data.json");
              Log.i("高远", "RUN:"+ s);
 }
}
2.解析json数据

image

也别忘记处理异常
                    // 1.JSONArray类解析
                    JSONArray jsonArray = new JSONArray(s);
                    for (int i = 0; i < jsonArray.length(); i++) {
                        //JSONObject类解析对象结构的json数据
                        JSONObject jsonObj = jsonArray.getJSONObject(i);
                        String id = jsonObj.optString("id");
                        String count = jsonObj.optString("count");
                        String goodsName = jsonObj.optString("goodsName");
                        String goodsPic = jsonObj.optString("goodsPic");
                        Log.i("高远", "run: " + id + count + goodsName + goodsPic);
                    }

                    // 2.使用Gson库解析
                    Gson gson = new Gson();
                    Type type = new TypeToken<List<Goods>>() {
                    }.getType();
                    List<Goods> goods = gson.fromJson(s, type);
                    for (Goods good : goods) {
                        int id = good.getId();
                        String goodsName = good.getGoodsName();
                        String count = good.getCount();
                        String goodsPic = good.getGoodsPic();
                        Log.i("低近", "run: " + id + count + goodsName + goodsPic);
                    }
3.对handler的再理解
之前那个项目里的MHandle为主线程 所有操作在这个内部完成 子线程向主线程发送消息
    class MHandle extends Handler {
        @Override
        public void dispatchMessage(@NonNull Message msg) {
            super.dispatchMessage(msg);
            if (msg.what == MSG_GOODS_OK) {
                if (msg.obj != null) {
                    String result = (String) msg.obj;
                    List<Goods> goodsList = getGoodsList(result);
                    pddAdapter.setData(goodsList);
                }
            }
        }
    }

标签:java,String,编程,50,result,import,new,Android,coon
From: https://www.cnblogs.com/gaodiyuanjin/p/18225616

相关文章

  • C++基础编程部分知识总结应用--图书管理系统
    C++基础编程部分知识总结应用–图书管理系统文章目录C++基础编程部分知识总结应用--图书管理系统1.代码结构和预处理命令2.定义图书结构体3.定义图书列表结构体4.后台控制函数5.显示主菜单6.添加图书函数7.查询图书函数8.显示所有图书函数9.修改图书信息函数10......
  • R语言对S&P500股票指数进行ARIMA + GARCH交易策略|附代码数据
    原文链接:http://tecdat.cn/?p=7207最近我们被客户要求撰写关于ARIMA+GARCH交易策略的研究报告,包括一些图形和统计输出。在本文中,我想向您展示如何应用S&P500股票市场指数的交易策略通过组合ARIMA和GARCH模型,从长期来看,我们可以超过“买入并持有”方法。策略概述该策略在“滚......
  • JUC并发编程第六章——volatile与JMM
    1被volatile修饰的变量有两大特点特点:可见性有序性:有排序要求,有时需要禁重排内存语义:当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,重新回到主内存中读取最新共享......
  • C++高级编程之——函数重载、内联、缺省参数、隐式转换
    C++函数的高级特性对比于C语言的函数,C++增加了重载(overloaded)、内联(inline)、const和virtual四种新机制。其中重载和内联机制既可用于全局函数也可用于类的成员函数,const与virtual机制仅用于类的成员函数。重载和内联肯定有其好处才会被C++语言采纳,但是不可以当成免......
  • ARC学习(2)基本编程模型认识(二)
    笔者继续来学习一下arc的编程模型的寄存器信息。1、core寄存器深入参数寄存器:r0-r7,8个参数,暂存器:r10-r15保存寄存器:r16-r25调用函数需要保存的寄存器指针寄存器:gp(全局指针)、fp(栈顶指针)、sp(栈底指针)链接寄存器:ilink(异常链接寄存器)、blink(分支链接寄存器)通用目的寄存器......
  • 每日一练编程题:今天是【接口,多态】
    设计程序:电脑类的属性USB接口数组:有3个usb插口电脑类的功能:通过接口插入外设(u盘,麦克风,键盘等)addUSB(USBusb){}开机要求:电脑开机前,先启动外设关机要求:电脑关机前,先关闭外设外设类(u盘,麦克风,键盘等)功能:启动关闭USB接口定义usb设备的统一......
  • 程序分享--大厂常见算法/编程面试题:O(1) 时间插入、删除和获取随机元素
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。或关注博主免费专栏【程序......
  • 轻松日赚 500+的秘密:高德地图评论赚钱攻略
    你能想象吗?在高德地图上写评论竟然也能赚钱!而且,一条评论就能获得8元左右的收益,高德还会奖励影视会员,这些会员也可以变现。今天,我将教你如何获取高质量的评论,如何无限获取单子,以及如何放大变现,实现轻松日破500+的批量化玩法!首先,让我们来了解一下这个项目的背景。随着移......
  • 系统编程POSIX信号量题
    系统编程POSIX信号量题目设计一个程序,主线程需要创建2个子线程之后主线程终止,此时进程中有2个子线程A和B,此时进程中有一个临界资源flag,子线程A获取触摸屏坐标并判断坐标值是否在LCD屏的左上角,如果坐标范围满足左上角,则利用条件量和互斥锁来唤醒子线程B,子线程B的任务是判断flag......
  • 系统编程练习题----利用条件量和互斥锁,实现两个线程之间的同步与互斥
    目录题目解析代码结果展示题目解析​ 该题主要依靠条件量和互斥锁来实现线程之间的同步与互斥,分析主线程、线程A和线程B的任务如下:主线程:打开LCD屏和触摸屏的硬件文件,并分别存储两个文件的文件描述符,方便后面进行条件判断。开启线程A和线程B。定义并初始化条件量和互斥......