Android中的网络编程

谷歌在Android6.0之后就废弃了使用HttpClinet进行网络连接。所以,这里需要重点学习的是通过HttpUrlConnect进行网络连接。

    String path="这里是你想要的连接";
        URL url=new URL(path);
        HttpURLConnection huc=(HttpURLConnection)url.openConnection();
        huc.setConnectTimeout(3000);
        huc.setReadTimeout(3000);
//请求方式,Get或者Post; huc.setRequestMethod(
"Get"); //IO流操作 if(huc.getResponseCode()==200){ InputStream is=huc.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); StringBuffer sb=new StringBuffer(); String line; while((line=br.readLine())!=null){ sb.append(line); } sb.toString(); }

通常情况下,需要判断网络是否连接:

 public Boolean isNet(Context context){
       //通过上下文拿到系统的连接服务,返回一个ConnectivityManager对象
       ConnectivityManager cm=(ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
//通过这个对象再拿到连接管理器。 NetworkInfo nwi
= cm.getActiveNetworkInfo();
//判断是否有网
if(nwi!=null){ return nwi.isAvailable(); }else{ return false; } }

之后就是如果从网络解析数据:

Json解析:

谷歌官方的Gson解析数据:

首先写一个DataBean,用来获取Gson解析的数据,这里要特别注意解析的顺序,和对象名一定要和Json一样的格式:

{

    "result": {
        "realtime": {
            "wind": {
                "windspeed": "0.0",
                "direct": "西南风",
                "power": "1级",
                "offset": null
            },
            "time": "20:00:00",
            "weather": {
                "humidity": "35",
                "img": "1",
                "info": "多云",
                "temperature": "30"
            },
            "dataUptime": "1467463816",
            "date": "2016-07-02",
            "city_code": "101270101",
            "city_name": "成都",
            "week": "6",
            "moon": "五月廿八"
        },
        "life": {
            "date": "2016-7-2",
            "info": {
                "kongtiao": [
                    "部分时间开启",
                    "天气热,到中午的时候您将会感到有点热,因此建议在午后较热时开启制冷空调。"
                ],
                "yundong": [
                    "较适宜",
                    "天气较好,户外运动请注意防晒,推荐您在室内进行低强度运动。"
                ],
                "ziwaixian": [
                    "中等",
                    "属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。"
                ],
                "ganmao": [
                    "少发",
                    "各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。"
                ],
                "xiche": [
                    "不宜",
                    "不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"
                ],
                "wuran": [
                    "较差",
                    "气象条件较不利于空气污染物稀释、扩散和清除,请适当减少室外活动时间。"
                ],
                "chuanyi": [
                    "炎热",
                    "天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。"
                ]
            }
        },
        "weather": [
            {
                "date": "2016-07-02",
                "week": "六",
                "nongli": "五月廿八",
                "info": {
                    "dawn": null,
                    "day": [
                        "1",
                        "多云",
                        "33",
                        "南风",
                        "微风",
                        "06:05"
                    ],
                    "night": [
                        "7",
                        "小雨",
                        "22",
                        "南风",
                        "微风",
                        "20:10"
                    ]
                }
            },
            {
                "date": "2016-07-03",
                "week": "日",
                "nongli": "五月廿九",
                "info": {
                    "dawn": [
                        "7",
                        "小雨",
                        "22",
                        "南风",
                        "微风",
                        "20:10"
                    ],
                    "day": [
                        "1",
                        "多云",
                        "31",
                        "南风",
                        "微风",
                        "06:05"
                    ],
                    "night": [
                        "1",
                        "多云",
                        "22",
                        "无持续风向",
                        "微风",
                        "20:10"
                    ]
                }
            },
            {
                "date": "2016-07-04",
                "week": "一",
                "nongli": "六月初一",
                "info": {
                    "dawn": [
                        "1",
                        "多云",
                        "22",
                        "无持续风向",
                        "微风",
                        "20:10"
                    ],
                    "day": [
                        "2",
                        "阴",
                        "31",
                        "无持续风向",
                        "微风",
                        "06:05"
                    ],
                    "night": [
                        "3",
                        "阵雨",
                        "23",
                        "北风",
                        "微风",
                        "20:10"
                    ]
                }
            },
            {
                "date": "2016-07-05",
                "week": "二",
                "nongli": "六月初二",
                "info": {
                    "dawn": [
                        "3",
                        "阵雨",
                        "23",
                        "北风",
                        "微风",
                        "20:10"
                    ],
                    "day": [
                        "1",
                        "多云",
                        "28",
                        "南风",
                        "微风",
                        "06:06"
                    ],
                    "night": [
                        "7",
                        "小雨",
                        "23",
                        "北风",
                        "微风",
                        "20:10"
                    ]
                }
            },
            {
                "date": "2016-07-06",
                "week": "三",
                "nongli": "六月初三",
                "info": {
                    "dawn": [
                        "7",
                        "小雨",
                        "23",
                        "北风",
                        "微风",
                        "20:10"
                    ],
                    "day": [
                        "8",
                        "中雨",
                        "29",
                        "北风",
                        "微风",
                        "06:06"
                    ],
                    "night": [
                        "8",
                        "中雨",
                        "21",
                        "北风",
                        "微风",
                        "20:10"
                    ]
                }
            },
            {
                "date": "2016-07-07",
                "week": "四",
                "nongli": "六月初四",
                "info": {
                    "dawn": null,
                    "day": [
                        "3",
                        "阵雨",
                        "27",
                        "东北风",
                        "微风",
                        "07:30"
                    ],
                    "night": [
                        "3",
                        "阵雨",
                        "22",
                        "东北风",
                        "微风",
                        "19:30"
                    ]
                }
            },
            {
                "date": "2016-07-08",
                "week": "五",
                "nongli": "六月初五",
                "info": {
                    "dawn": null,
                    "day": [
                        "3",
                        "阵雨",
                        "27",
                        "东北风",
                        "微风",
                        "07:30"
                    ],
                    "night": [
                        "3",
                        "阵雨",
                        "22",
                        "东北风",
                        "微风",
                        "19:30"
                    ]
                }
            }
        ],
        "pm25": {
            "key": "",
            "show_desc": "0",
            "pm25": {
                "curPm": "54",
                "pm25": "34",
                "pm10": "54",
                "level": "2",
                "quality": "良",
                "des": "今天的空气质量是可以接受的,除少数异常敏感体质的人群外,大家可在户外正常活动。"
            },
            "dateTime": "2016年07月02日20时",
            "cityName": "成都"
        },
        "isForeign": 0
    },
    "error_code": 0,
    "reason": "Succes"

}

 DataBean:

package com.zhuoxin.bean;

import java.io.Serializable;
import java.util.List;


public class WeatherDataBean implements Serializable{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public String reason;//返回请求成功,或者是失败的原因
    
    public Reslut result;
    public static class Reslut implements Serializable{
        public Realtime realtime;
        public static class Realtime implements Serializable{
            public String date;//当天的日期
            public String time;//更新的时间
            public String city_name;//当前的城市名称
            public String week;//星期几
            public String moon;//农历日期
            
            public Wind wind;
            public static class Wind implements Serializable{
                public String direct;//风向
                public String power;//风力
            }
            
            public Weather weather;
            public static class Weather implements Serializable{
                public String info; //天气情况
                public String temperature;//当前的温度
            }
        }
        public Life life;//生活指数
        public static class Life implements Serializable{
            public Info info;//生活指数的info
            public static class Info implements Serializable{
                List<String> kongtiao;
                List<String> yundong;
                List<String> ziwaixian;
                List<String> ganmao;
                List<String> xiche;
                List<String> wuran;
                List<String> chuanyi;
            }
        }
        
        List<FutureWeather> weather;//未来几天的天气数组的key
        public static class FutureWeather implements Serializable{
            public String date;//未来几天天气的日期
            public String week;//未来几天天气的星期几
            public String nongli;//未来几天天气的农历日期
            public Info info;//未来几天天气的info
            public static class Info implements Serializable{
                List<String> day; //白天的天气信息
                List<String> night;//晚上的天气信息
            }
        }
        public Pm25 pm25;
        public static class Pm25 implements Serializable{
            public Pm250 pm25;
            public static class Pm250 implements Serializable{
                public String curPm;//当前pm2.5的值
                public String quality;//空气情况
                public String des; // 提示
            }
        }
    }
}

之后的事就非常简单了:

 public <WeatherDataBean> parsejson(String json){
       Gson gs=new Gson();
传两个参数:一个是Json连接,一个是DataBean的类。 return gs.fromJson(json, WeatherDataBean.
class); }

XML解析这里讲谷歌的PULL解析XML,XML解析同样的要写一个DataBean用来存放解析出来要解析的数据:

XML:

<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">博客园_48小时阅读排行</title>
<id>uuid:f59e7376-bd59-4244-91c8-c1d8a91207db;id=42519</id>
<updated>2016-07-02T13:14:13Z</updated>
<entry>
<id>5631573</id>
<title type="text">通过几个Hello World感受.NET Core全新的开发体验</title>
<summary type="text">
2016年6月27日,这是一个特殊的日子,微软全新的.NET开发平台.NET Core的RTM版本正式发布。我个人将.NET Core的核心特性归结为三点,它们的首字母组成一个非常好记的简称——COM,分别代表的含义Cross-Platform、Open-Source和Modularization。...
</summary>
<published>2016-06-30T23:19:00+08:00</published>
<updated>2016-07-02T13:14:13Z</updated>
<author>
<name>Artech</name>
<uri>http://www.cnblogs.com/artech/</uri>
<avatar>http://pic.cnblogs.com/face/u19327.jpg</avatar>
</author>
<link rel="alternate" href="http://www.cnblogs.com/artech/p/net-core-hello-world.html"/>
<diggs>59</diggs>
<views>5023</views>
<comments>58</comments>
</entry>
</feed>

 Bean文件,同个生成get和set存取数据:

package com.yakir.databean;

import android.graphics.Bitmap;

/**
 * Created by qbqw7 on 2016/6/26.
 */
public class MainBolgData {
    private String id;
    private String title;
    private String summary;
    private String published;
    private String updated;
    private String name;
    private String uri;
    private Bitmap avatar;
    private String link;
    private String diggs;
    private String views;
    private String comments;
    private Bitmap topicIcon;
    private String sourceName;
    private String posts;
    private String comment;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public String getPublished() {
        return published;
    }

    public void setPublished(String published) {
        this.published = published;
    }

    public String getUpdated() {
        return updated;
    }

    public void setUpdated(String updated) {
        this.updated = updated;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUri() {
        return uri;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }

    public Bitmap getAvatar() {
        return avatar;
    }

    public void setAvatar(Bitmap avatar) {
        this.avatar = avatar;
    }

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public String getDiggs() {
        return diggs;
    }

    public void setDiggs(String diggs) {
        this.diggs = diggs;
    }

    public String getViews() {
        return views;
    }

    public void setViews(String views) {
        this.views = views;
    }

    public String getComments() {
        return comments;
    }

    public void setComments(String comments) {
        this.comments = comments;
    }

    public Bitmap getTopicIcon() {
        return topicIcon;
    }

    public void setTopicIcon(Bitmap topicIcon) {
        this.topicIcon = topicIcon;
    }

    public String getSourceName() {
        return sourceName;
    }

    public void setSourceName(String sourceName) {
        this.sourceName = sourceName;
    }

    public String getPosts() {
        return posts;
    }

    public void setPosts(String posts) {
        this.posts = posts;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }
}

 PULL解析:

public List<Data> parseXml(InputStream is) {
      try {
// 建一个解析工厂 XmlPullParserFactory xpf
=XmlPullParserFactory.newInstance();
//拿到解析器 XmlPullParser parser
=xpf.newPullParser();
//给解析器装填原料 parser.setInput(is,
"UTF-8"); //拿到解析的时间类型 int evenType=parser.getEventType();
//开始解析,做循环判断,如果不是xml文档末就一直解析
while (evenType!=XmlPullParser.END_DOCUMENT) { String tagaName=parser.getName(); switch (evenType) {
//开始解析xml的时候创建一个list容器存储对象,将data初始化。
case XmlPullParser.START_DOCUMENT: list=new ArrayList<Data>(); data=new Data(); break;
//解析标签,从标签头开始
case XmlPullParser.START_TAG:
//如果标签匹配了"entry"这个字符串就解析
if (tagaName.equals("entry")) { //如果标签匹配了"title"这个字符串就将这个标签后面的字符串取出来 }else if (tagaName.equals("title")) { data.setTitle(parser.nextText()); }else if (tagaName.equals("summary")) { data.setSummary(parser.nextText()); }else if (tagaName.equals("name")) { data.setName(parser.nextText()); }else if (tagaName.equals("updated")) { data.setUpdated(parser.nextText()); } if (tagaName.equals("comments")) {
//当判断到是末尾字符串标签的时候就把这个对象撞到list中 data.setComments(parser.nextText()); list.add(data); }
break; case XmlPullParser.END_TAG: break; }
//如果数据多条,当取完了就应该跳到下一个事件类型。

eventType = parser.next();

最后来一波吉祥物:

    //┏┓   ┏┓  
    //┏┛┻━━━┛┻┓  
    //┃       ┃    
    //┃   ━   ┃  
    //┃ ┳┛ ┗┳ ┃  
    //┃       ┃  
    //┃   ┻   ┃  
    //┃       ┃  
    //┗━┓   ┏━┛  
    //  ┃   ┃   神兽保佑          
    //  ┃   ┃   代码无BUG!  
    //  ┃   ┗━━━┓  
    //  ┃       ┣┓  
    //  ┃       ┏┛  
    //  ┗┓┓┏━┳┓┏┛  
    //    ┃┫┫ ┃┫┫  
    //    ┗┻┛ ┗┻┛  

 

转载于:https://www.cnblogs.com/lovelyYakir/p/5636083.html

流体动力学仿真软件:XFlow_(20).案例研究:声学仿真 在流体动力学仿真软件中,声学仿真是一个重要的应用领域。通过数值模拟,工程师和科研人员可以预测和分析流体系统中的声学现象,如气动噪声、声波传播和声场分布。这些仿真结果对于优化设计、降低噪声水平和提高系统性能具有重要意义。本节将详细介绍如何在流体动力学仿真软件中进行声学仿真,包括声学模型的选择、参数设置、后处理分析等内容,并通过具体的案例来说明这些步骤。 阅读详情

相关推荐

openEuler 欧拉 安装Oracle19c数据库RPM包安装

欧拉系统安装部署oracle 19c rpm方式

陈苏漾的IT生涯 6894

Android接口返回null问题,Android小问题总结-参数为null的坑有点深

做课表时,解析返回的json数据,结果每次崩溃,说我字符串为空。如下段代码:p_kkzc=myCoursebean.get( i ).getKkzc().split( "," );//分割开课周次报错如下:FATAL EXCEPTION: mainProcess: com.goxxxyy.xxxschool, PID: 13122java.lang.NullPointerException: At...

weixin_42157556的博客 2610

Globus数据下载全攻略:从零配置到批量下载大文件(附常见问题解决)

本文详细介绍了Globus数据下载的全流程,从零配置到批量下载大文件的实用技巧,包括环境准备、高级传输策略、性能优化及常见问题解决方案。Globus作为科研数据的高效传输工具,通过并行流传输和自动校验技术,显著提升大规模数据传输的效率和可靠性。

u9v0w的博客 663

《安卓网络编程》之第六篇 Android中的WIFI和蓝牙

关于WIFI就不多介绍啦,直接来个段子吧。 问:“WiFi对人体有伤害么?” 答:“不清楚,反正没有WiFi我就浑身不舒服。 比较重要的一点就是WifiManager wm=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE); 关闭打开搜索都可以通过调用wm的相关方法实现。可能要开发wifi万能钥匙那...

weixin_30326745的博客 428

LLM and Embedding区别

LLM(大语言模型)和 Embedding(嵌入)是自然语言处理(NLP)中的两个核心概念,它们的核心区别在于。Embedding 计算向量。

u010674101的专栏 1875

【25届数字IC秋招总结】面试经验6——经纬恒润

25届数字ic面试记录——经纬恒润

lalala0635的博客 991

android网络编程——使用Android中的网络连接

博客源址:android网络编程——使用Android中的网络连接            网络编程在无线应用程序开发过程中起到了重要的作用。Android包括Apache HttpClient库,此库为执行Android中的网络操作之首选方法。Android还可允许通过标准的Java联网API(java.net包)来访问网络。即便使用Java.net包,也是在内部使用该Apache库。

Android移动开发者的专栏 1298

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

ARINC 653 在综合模块化航空电子设备(IMA)的发展进程中扮演着极为关键的角色。从行业应用的实际情况来看,空客 A380 和波音 787 等先进飞机的航电系统套件充分体现了行业对 IMA 的高度重视和积极投入。在 IMA 架构下,核心软件具备强大的能力,能够支持多个航空电子应用程序的同时运行。这些应用程序可以并行开发,并高效地部署在同一个计算平台上,极大地提高了开发效率和系统集成度。ARINC 653 的出现为航空电子行业创造了一个充满活力和竞争力的商业环境。

2957

Android中的网络编程-黄俊东-专题视频课程

剔除繁杂的理论,注重实践,深入浅出讲解Android中的网络编程

黄俊东的专栏 349

44位abogus补环境与纯算逆向分析

44位ab参数补环境与纯算加密流程逆向分析

吴秋霖的博客 2779

保研考研机试攻略:python笔记(4)

保研考研机试攻略:python笔记(4)二分法+最大公约数+最小公倍数+素数判断+幂次方mod方法+匹配问题+哈希算法+哈夫曼编码+二叉树

qq_63349644的博客 1097

安卓中的网络编程

一. 使用URL对象请求网络 1、HttpURLConnection对象:  //GET : http://192.168.12.37:8080/xxx?a=aaa&b=bbb  //POST : http://192.168.12.37:8080/xxx  URL url = new URL(path);  HttpURLConnection conn = (HttpURLConnec

杨成勇 1099

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android网络编程中的Http协议总结

Android网络编程中的Http协议总结

扬帆起航 1445

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android中的几种网络编程方式

一、针对TCP/IP的Socket、ServerSocket。 二、针对UDP的DatagramSocket、DatagramPackage。考虑到Android设备主要是手持终端,IP都是伴随着上网进行分配的。不是固定不变的。因此开发也是与普通互联网应用有所差异的。 三、直接针对URL的HttpUrlConnection。就是把请求的方式从HttpClient换成HttpURLConnect

bwf_erg的博客 1361

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android handler发送字符串,Android中的网络编程与handler,Json,HttpClient理解与使用

网络编程入门HTTP协议简介日常生活中,大多数人遇到了问题都会使用手机进行百度搜索,在浏览器的地址栏中输入百度的网址点击搜索,就会进入百度主页。这个访问百度的过程就是HTTP协议完成的,HTTP即超文传输协议,它规定了浏览器和服务器之间相互通信的规则,这里说的浏览器,既包括PC端浏览器,又包括移动端浏览器。当客户端与服务器建立连接后,向服务器发送的请求,我们称之为HTTP请求。服务器接收到客户端请...

weixin_42131618的博客 319

android中的网络编程

Socket就是网络套接字编程,网络编程简单的理解就是两台计算机相互通讯数据而已。对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作,这些Api存在与java.net 这个包里面。 网络编程的基本模型就是c/s模型,简单的理解是两个进程之间相互通讯,其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定

plj208的专栏 410

android网络编程中的Http、Https、TCP/IP、Socket

前言 在Android中,网络编程是是十分重要的一项,下面就来介绍一下网络编程方面的知识。 简介 HTTP 超文本协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。Http定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎么把文档传给浏览器。Http是万维网可靠的交换文件(包括文本、图像、声音、以及视频...

浪克oo的博客 1184

Android 网络编程——Android 中的 HTTP 编程

Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序。 区别 HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等, HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。 案例 URLConnection S

WYYZ5的专栏 658
上一篇: JAVA 中的IO流
下一篇: Android中自定义ListView实现上拉加载更多和下拉刷新
diebing0439
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值