网络HTTP协议
WebView:在应用中嵌入一个浏览器
......
webView = (webView)findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true); //设置支持JS
webView.setWebViewClient(new WebViewClient()); //跳转网页时,不打开系统浏览器,而是在当前webView中显示
webView.loadUrl("http://www.baidu.com"); //传入网址
......
webView需要在AndroidManifest.xml中声明权限
HTTP协议
原理:客户端向服务端发送一条HTTP请求,服务器收到请求后返回数据给客户端,客户端再对数据进行解析和处理。
发送请求:HttpURLConnection和HttpClient两种方式;GET和POST两种方法。(GET从服务器获取数据,POST提交数据给服务器)
HttpURLConnection:
1、创建实例:new一个URL对象,并传入目标网络地址,调用openConnection()方法。
URl url = new URL("http://www.baidu.com");
HttpURLConnection connection = (HttpURLConnection)rul.openConnection();
2、设置方法:connection.setRequestMethod("GET");
3、其他设置:连接超时、读取超时、消息头等。
4、调用getInputStream()获取服务器返回的输入流,并读取:InputStream in = connection.getInputStream();
5、调用disconnect():connection.disconnect();
HttpClient(接口):
1、创建:HttpClient httpClient = new DefaultHttpClient();
2、设置方法:GET:
HttpGet httpGet = new HttpGet("http://www.baidu.com");
httpClient.execute(httpGet);
POST:
HttpPost httpPost = new HttpPost("http://www.baidu.com");
//创建NameValuePair结合存放待提交的参数
List<NameValuePair>parms = new ArrayList<NameValuePair>();
prams.add(new BasicNameValuePair("username","admin"));
prams.add(new BasicNameValuePair("password","123456"));
//传入entity
UrlEncodedFormEntity entity = new UrlEncodedEntity(parms,"utf-8");
httpPost.setEntity(entity);
httpClient.execute(httpPost);
3、返回HttoResponse对象,取出状态码:if(httpResponse.getStatusLine().getStatusCode()==200){......}
if(httpResponse.getStatusLine().getStatusCode()==200){
HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity,"utf-8"); //含有中文需要指定字符集为utf-8
Message message = new Message();
meesage.what = SHOW_RESPONSE;
message.obj = response.toString();
handler.sendMessage(message);
}
解析xml:
1、Pull解析
......
XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); //获得XmlPullParserFactory对象
XmlPullParser xmlPullParser = factory.newPullParser(); //获得XmlPullParser对象
xmlPullParser.setInput(new StringReader(xmlData)); //传入xml数据进行解析
......
2、Sax解析
新建一个类继承DefaultHandler,并重写5个父类方法:startDocument()、startElement()、characters()、endElement()、endDocument()
......
SAXParserFactory factory = SAXParserFactory.newInstance(); //获得SAXParserFactory对象
XMLReader xmlReader = factory.newSAXParser().getXMLReader(); //通过工厂获取XMLReader对象
ContentHandler handler = new ContentHandler();
xmlReader.setContentHandler(handler); //将handler对象设置到xmlReader中
xmlParser.parse(new InputSource(new StringReader(xmlData))); //调用parse()解析
......
解析JSON
体积小,省流量
1、JSONObject解析
......
JSONArray jsonArray = new JSONArray(jsonData); for(int i=0;i<jsonArray.length;i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String version= jsonObject.getString("version");
}
......
2、GSON解析
需要下载一个gson的jar包放到libs目录下
将一段JSON格式的字符串自动映射成一个对象。
......
Gson gson = new Gson();
List<App> appList =gson.fromJson(jsonData,new TypeToken<List<App>>(){}.getType());
for(App app:appList){
......
}
......
网络HTTP协议的更多相关文章
- ZeroMQ接口函数之 :zmq_tcp – 使用TCP协议的ØMQ网络单播协议
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-tcp zmq_tcp(7) ØMQ Manual - ØMQ/4.1.0 Name zmq_t ...
- TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议
原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...
- 浅探网络1---tcp协议详解(三次握手和四次挥手)
TCP协议是网络多层协议中运输层的最重要的协议之一,运输层是两台主机的进程之间的通信.除了TCP还有一个是UDP协议(用户数据包协议) TCP全称是Transmission Control Proto ...
- ylbtech-协议-网络-安全协议:HTTPS
ylbtech-协议-网络-安全协议:HTTPS HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext ...
- 网络编程协议(TCP和UDP协议,黏包问题)以及socketserver模块
网络编程协议 1.osi七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.套接字 socket 有两类,一种基于文件类型,一种基于网络类型 3.Tcp和udp协议 ...
- IEEE1588精密网络同步协议(PTP)
1 引言 以太网技术由于其开放性好.价格低廉和使用方便等特点,已经广泛应用于电信级别的网络中,以太网的数据传输速度也从早期的10M提高到100M,GE,10GE.40GE,100GE正式产品也于20 ...
- 网络编程协议(TCP和UDP协议,粘包问题)以及socketserver模块
网络编程协议 1.osi七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.套接字 socket 有两类,一种基于文件类型,一种基于网络类型 3.Tcp和udp协议 ...
- tcp/ip (网络通讯协议)
介绍 TCP: 传输控制协议, IP: 网际协议, TCP/IP: 供已连接互联网的计算机之间进行通信的通信协议 在tcp/ip内部 , 包含一系列处理数据通信的协议: tcp.udp.icmp.dh ...
- 协议-网络-安全协议:SSH(安全外壳协议)
ylbtech-协议-网络-安全协议:SSH(安全外壳协议) SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立 ...
- Raknet是一个基于UDP网络传输协议的C++网络库(还有一些其它库,比如nanomsg,fastsocket等等)
Raknet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务.通常情况下用于游戏,但也可以用于其它项目. Raknet有以下好处: 高性能 在同一台计算机 ...
随机推荐
- 定时器中实现数据库表数据移动的功能,Exception in thread "Timer-0" isExist java.lang.NullPointerException定时器中线程报错。
package com.shawnway.trade.marketdata.constants; import java.sql.SQLException; import java.util.Cale ...
- C语言:使用命令行参数用字符串读取流和输出流进行文本文件的复制
#include<stdio.h> int main(int argc,char *argv[]) { //检查用户的参数是否正确 if(argc<3) { printf(" ...
- Go并发控制之sync.WaitGroup
WaitGroup 会将main goroutine阻塞直到所有的goroutine运行结束,从而达到并发控制的目的.使用方法非常简单,真心佩服创造Golang的大师们! type WaitGroup ...
- .NET中Redis安装部署及使用方法简介附->开源Redis操作辅助类
Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Github.StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/. Re ...
- NOI 05:最高的分数描述
描述 孙老师讲授的<计算概论>这门课期中考试刚刚结束,他想知道考试中取得的最高分数.因为人数比较多,他觉得这件事情交给计算机来做比较方便.你能帮孙老师解决这个问题吗? 输入输入两行,第一行 ...
- Extjs swfUpload 多图片上传
一.属性介绍 类型 默认值 描述 upload_url String 处理上传文件的服务器端页面的url地址,可以是绝对地址,也可以是相对地址,当为相对地址时相对的是当前代码所在的文档地址 p ...
- C++之流与文件
C++中,输入输出采用流来进行,例如iostream库中的 cin 和 cout .对文件进行读写操作也使用流.可以将文件与流关联起来,然后对文件进行操作.要将流与文件关联起来,必须像声明变量那样声明 ...
- spring cloud 学习研究- spring-cloud-microservice-example
spring cloud + docker 微服务架构 http://www.open-open.com/lib/view/open1437363835818.html 实例项目 https://gi ...
- Log(android.util.Log)(option+return)
Log.v() verbose 琐碎,详细 Log.d() debug 调试 Log.i() info 信息,重要,分析行为 Log.w() wain 警告 log.e() error 错误 参数:t ...
- ubuntu16.04.1下的mysql修改默认编码
在Ubuntu 下配置 Mysql 的字符编码.安装完 Mysql 后,系统默认的字符编码是 latin1 ,输入的是中文,可是输出却是一堆乱码.现在要做的就是把 Mysql的默认字符编码设置为支持中 ...