• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android开发9:网络访问&Web服务开发,android开发9访问

Android开发9:网络访问&Web服务开发,android开发9访问

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了精通android网络开发,android网络开发,android 开发网络聊天,android 网络视频开发,android开发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android开发9:网络访问&Web服务开发,android开发9访问


前言

  啦啦啦各位小伙伴们好~

  一起进入我们今天的主题。今天我们将和大家学习网络访问和Web服务开发的相关知识,一起学习熟练使用 HttpURLConnection 访问 WebService,熟悉使用多线程以及 Handler 更新 UI,熟悉使用 XmlPullParser 解析 xml 文档数据,了解 RecyclerView 控件的使用。

 

基础知识

一、网络访问&Web服务开发

 1 、实验WebService 地址

  (1)实验中所使用的 WebService 地址为:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getWeather

  在浏览器打开实验需要的 WebService 网站可以看到截图如下:

    可以看到,查询需要用到两个参数 theCityCode(默认参数为上海)和 theUserID,如果使用免费的 WebService,其中 theUserID 置空即可,输入后点击调用,查看返回值:

可以看到其中返回的数据为 xml 文件格式,我们需要用 XmlPullParser 提取我们需要的信息。

(2)有兴趣可以在网站上看一下如何免费使用 WebService:http://www.webxml.com.cn/zh_cn/web_services.aspx

PS:免费用户 24 小时内查询不超过 50 次并且获取二次数据大于间隔 600ms
(如果测试时超过上限更换一下网络 IP 重新测试即可)

 

2 、网络访问

在本次实验中使用 HttpURLConnection 实现网络访问:

(1) 在 manifest 中添加网络访问权限:

    (2) 判断是否有可用网络:使用 ConnectivityManager 获取手机所有连接管理对象,使用 manager 获取 NetworkInfo 对象,最后判断当前网络状态是否为连接状态即可。

(3) 定义我们需要用到的 WebService 地址:

(4) 使用 HttpURLConnection 新建一个 http 连接,新建一个 URL 对象,打开连接即可,并且设置访问方法以及时间设置:

    (5)将我们需要请求的字段以流的形式写入 connection 之中,这一步相当于将需要的参数提交到网络连接,并且请求网络数据(类似于 html 中的表单操作,将 post 数据提交到服务器)

(6)网页获取 xml 转化为字符串:

  在 logcat 中查看一下 response,实际上就是将网站上的 xml 转化为 string 而已,便于下一步的 xml 数据解析

(7)关闭 connection:

    (8)注:Android4.0 之后,http 请求需要开启子线程,然后由子线程执行请求,所以我们之前所写代码都是在子线程中完成的,并且使用 XmlPullParser 进行解析从而得到我们想要的数据:

 

3 、Handler 更新 UI

在之前的实验中我们已经知道,子线程中不能直接修改 UI 界面,需要中间人 handler 进行UI 界面的修改:

Message 消息机制:负责在不同的线程之间进行交互处理,我们先定义消息类型:

然后将我们需要的内容通过消息传递回来:

 

4 、XmlPullParser 解析 xml 文档

首先获取 XmlPullParser 对象实例,然后设置需要解析的字符串,最后按照 tag 逐个获取所需要的 string:

注:

  由于我们获取的 xml 字符串是 string 类型的数组(ArrayofString),所以我们也可以将按照 string(Tag)获取的字符串储存到ArrayList<String>中,然后在 Handler 中再进行处理,不断的将所需要的字符串进行分割处理,以用来更新 UI 界面。

异常处理部分:

1)城市名输入错误时:注意判断取回的字符串是否是“查询结果为空。…”

2)二次查询间隔<600ms 时:注意判断取回的字符串是否是“发现错误:免费用户不能使用高速访问。…”

3)达到上限 50 次:注意判断取回的字符串是否是“发现错误:免费用户 24 小时内访问超过规定数量。…”

 

二 、RecyclerView 控件使用

  RecyclerView 是 support-v7 包中的新组件,是一个强大的滑动组件,与经典的 ListView相比,同样拥有 item 回收复用的功能。RecyclerView 是 ListView 的升级版,最为突出的就是其拓展性极强,并且灵活性高。

(1)导入 RecyclerView 的 jar包,导入方法:

  http://jingyan.baidu.com/article/e6c8503c7190b7e54f1a1893.html

(2) RecylerView 的设置

(3)Adapter 的构造:

package com.example.administrator.ex9;
import java.util.ArrayList;
import java.util.List;
import android.R.integer;
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class WeatherAdapter  extends RecyclerView.Adapter<WeatherAdapter.ViewHolder>{
private ArrayList<Weather>  weather_list;
private LayoutInflater  mInflater;
public interface OnItemClickLitener
{
void onItemClick(View view,  int position,Weather item);
}
private OnItemClickLitener  mOnItemClickLitener;
public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)
{
this. mOnItemClickLitener = mOnItemClickLitener;
}
public WeatherAdapter(Context context,ArrayList<Weather> items) {
super();
weather_list = items;
mInflater = LayoutInflater.from(context);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup,  int i) {
View view =  mInflater.inflate(R.layout. weather_item, viewGroup,  false);
ViewHolder holder =  new ViewHolder(view);
holder. Date = (TextView)view.findViewById(R.id. date);
holder. Weather_description =(TextView)view.findViewById(R.id. weather_description);
holder. Temperature = (TextView)view.findViewById(R.id. temperature);
return holder;
}
@Override
public void onBindViewHolder( final ViewHolder viewHolder, final int i) {
viewHolder. Date.setText( weather_list.get(i).getDate());
viewHolder. Weather_description.setText( weather_list.get(i).getWeather_description());
viewHolder. Temperature.setText( weather_list.get(i).getTemperature());
if ( mOnItemClickLitener !=  null)
{
viewHolder. itemView.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
//  TODO  Auto- - generated method stub
mOnItemClickLitener.onItemClick(viewHolder. itemVie



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android开发9:网络访问&amp;Web服务开发,android开发9访问

相关文章

  • 2017-05-26接入微信分享过程的喜和泪
  • 2017-05-265个Android开发中比较常见的内存泄漏问题及解决办法,android比较常见
  • 2017-05-26Android Studio 1.5.1 JNI 编程
  • 2017-05-26Android实战技巧之五十:App的系统签名
  • 2017-05-26nginx rewrite常用示例
  • 2017-05-26Android_Printservice_API_部分翻译
  • 2017-05-26Butter Knife使用详解,butterknife
  • 2017-05-26Android Material Design NavigationView 及 Palette 颜色提取器,materialpalette
  • 2017-05-227.3.1 Android 文件上传
  • 2017-05-26使用Android-Debug-Database 在浏览器中查看App的数据库,清科zdatabase数据库

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android网络编程(三)Volley用法全解析
    • 编译android源码4---ubuntu下载Android源代码
    • 记一次流量异常处理
    • 插入排序算法详解,排序算法详解
    • Kotlin中的“忍者”函数 —— 理解泛型的能力(KAD 12),kotlinkad
    • Android Drawable的9种子类 介绍
    • [转载] 从Handler.post(Runnable r) ,Handler.sendEmptyMessage()梳理Android的消息机制(以及handler的内存泄露),
    • 我的android学习经历16,android学习经历16
    • Android开发:内存机制分析——堆和栈
    • Android中Fragment的两种创建方式,androidfragment

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有