【Android】【笔记】《Android 入门经典》part 13 网络通信技术
来源:互联网 发布:linux服务器访问外网 编辑:程序博客网 时间:2024/06/04 23:20
本文为个人读书笔记,大部分为书中内容摘要。仅供记录和分享学习中遇到的需要留意的问题,如有相关版权问题请及时通知作者。
通过HTTP访问网络
使用HttpURLConnection
HttpURLConnection类位于java.net中,用于发送HTTP请求和获取HTTP响应。由于该类是抽象类,不能直接实例化对象,需要使用URL的openConnection()方法来获得。
URLurl=newURL( "http://aa.bb.cc");
HttpURLConnectionurlConnection=(HttpURLConnection)url.openConnection();
通过openConnetion()方法创建的HttpURLConnection对象,并没有真正执行连接操作,只是创建了一个新的实例,在进行连接前,还可以设置一些属性。
创建了HttpURLConnection对象后,就可以使用该对象发送HTTP请求了。HTTP请求通常分为GET和POST两种。
1、GET
默认方式。在指定连接地址时,将要传递的参数通过“?参数名=参数值”进行传递,多个参数使用英文半角逗号分隔,然后获取流中的数据,并关闭连接即可。
适合发送小于1024KB的数据
【18.1】
2、POST
使用HttpURLConnection类在发送请求时默认采用GET请求,如果要发送POST请求,需要通过其setRequestMethod()方法进行指定。
HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();
urlConn.setRequestMethod("POST");
需要通过HttpURLConnection类及其父类URLConnection提供的方法设置相关内容
发送POST请求时常用的方法
方法描述setDoInput(boolean newValue)设置是否向连接中写入数据,true写入setDoOutput(boolean newValue)设置是否从连接中读取数据,true读取setUseCaches(boolean newValue)设置是否缓存数据,true缓存setInstanceFollowRedirects(boolean followRedirects)设置是否自动执行http重定向,true执行setRequestProperty(String field,String newValue)设置一般求情属性。例:setRequestProperty("Content-Type","application/x-www-form-urlencoded")使用HttpClient
用于比较复杂的联网操作。由Apache组织提供的项目。已在Android中集成。
HttpClient实际上是对Java提供的访问网络的方法进行了封装。在HttpURLConnection类中的输入输出流操作,在这个HttpClient中被统一封装成了HttpGET、HttpPOST和HttpResponse类。HttpGET类用于代表发送GET请求;HttpPOST类代表发送POST请求;HttpResponse代表处理响应的对象。
1、发送GET请求
大致分为5个步骤:
①创建HttpClient对象
②创建HttpGET对象
③如果需要发送请求参数,可以直接将要发送的的参数连接到URL地址中,也可以调用HttpGET的setParam()方法来添加请求参数
④调用HttpClient对象的execute()方法发送请求。执行该方法将返回一个HttpResponse对象。
⑤调用HttpResponse的getEntity()方法,可获得包含服务器的响应内容的HttpEntity对象,通过该对象可以获取服务器的响应内容。
2、发送POST请求
5个步骤:
①创建HttpClient对象
②创建HttpPOST对象
③如果需要发送请求参数,可以调用HttpPOST的setParams()方法来添加请求参数,也可以调用setEntity()方法来设置请求参数
④调用HttpClient对象的execute()方法发送请求。执行该方法返回一个HttpResponse对象
⑤调用HttpResponse的getEntity()方法,可获得包含了服务器的响应内容的HttpEntity对象,通过该对象可以获取服务器的响应内容。
使用WebView显示网页
Android中要使用内置浏览器需要通过WebView组件来实现。
使用WebView组件浏览网页
可以在XML布局文件中使用<WebView>标记添加,也可以在java文件中new。
WebView组件提供的常用方法
方法描述loadUrl(String url)加载指定URL对应的网页loadData(String data,String mime,String encoding)将指定的字符串数据加载到浏览器中loadDataWithBaseURL(String baseUrl,String data,String mimeType,String encoding,String historyUrl)基于URL加载指定的数据capturePicture()创建当前屏幕的快照goBack()执行后退操作,相当于浏览器上的后退按钮goForward()执行前进操作,相当于浏览器上的前进按钮stopLoading()停止加载当前页面reload()刷新当前页面使用WebView加载HTML代码
WebView提供了loadData()方法和loadDataWithBaseURL()方法来加载HTML代码。但是,使用loadData方法加载带中文的HTML内容时,会产生乱码。使用loadDataWithBaseURL()方法就不会出现。
loadDataWithBaseURL(String baseUrl,String data,String mimeType,String encoding,String historyURL)
baseUrl:指定当前页使用的基本URL。如果为null,则使用默认的about:blank,空白页
data:指定要显示的字符串数据
mimeType:指定要显示内容的MIME类型。null则使用text/html
encoding:指定数据的编码方式
historyUrl:指定当前页的历史URL,也就是进入该页前显示页的URL。null则使用about:blank
让WebView支持JavaScript
默认不支持。
两个步骤:
1、使用WebView组件的WebSetting对象提供的setJavaScriptEnable()方法让JavaScript可用
webview.getSettings().setJavaScriptEnable(true);
2、对于通过window.alert()方法弹出的对话框,需要使用WebView组件的setWebChromeClient()方法来处理JavaScript的对话框
webview.setWebChromeClient(new WebChromeClient());
0 0
- 【Android】【笔记】《Android 入门经典》part 13 网络通信技术
- 【Android】【笔记】《Android 入门经典》part 4 Android布局管理
- 【Android】【笔记】《Android 入门经典》part 5 程序调试
- 【Android】【笔记】《Android 入门经典》part 6 Activity
- 【Android】【笔记】《Android 入门经典》part 7 Intent
- 【Android】【笔记】《Android 入门经典》part 8 Activity
- 【Android】【笔记】《Android 入门经典》part 9 事件处理
- 【Android】【笔记】《Android 入门经典》part 10 数据存储
- 【Android】【笔记】《Android 入门经典》part 11 ContentProvider 数据共享
- 【Android】【笔记】《Android 入门经典》part 14 Service
- Android入门笔记 - 网络通信 - HttpURLConnection
- Android入门笔记 - 网络通信 - HttpClient
- Android入门笔记 - 网络通信 - Socket
- Android入门笔记 - 网络通信 - WebKit
- Android网络通信技术
- 【Android】【笔记】《Android 入门经典》part 1 安卓程序的组成
- 【Android】【笔记】《Android 入门经典》part 2 安卓的基本组件
- 【Android】【笔记】《Android 入门经典》part 3 安卓开发组件
- git-使用指南
- LeetCode #237 Delete Node in a Linked List
- 遍历新姿势
- opencv(2)
- hdoj 5616 Jam's balance 【母函数】
- 【Android】【笔记】《Android 入门经典》part 13 网络通信技术
- iOS swift sqlite使用,上传及定时更新
- C内存管理
- SACK信息
- 【Android】【笔记】《Android 入门经典》part 14 Service
- Codefroces 618D Hamiltonian Spanning Tree 树型动规
- TCP显示冲突通告(ECN)
- 集训队专题(2)1007 Evolution
- 【NYOJ】[463]九九乘法表