【Android】【笔记】《Android 入门经典》part 13 网络通信技术

本文为个人读书笔记,大部分为书中内容摘要。仅供记录和分享学习中遇到的需要留意的问题,如有相关版权问题请及时通知作者。

通过HTTP访问网络
     
使用HttpURLConnection
     HttpURLConnection类位于java.net中,用于发送HTTP请求和获取HTTP响应。由于该类是抽象类,不能直接实例化对象,需要使用URL的openConnection()方法来获得。
     
     URL url=new URL( "http://aa.bb.cc");
     HttpURLConnection urlConnection=(HttpURLConnection)url .openConnection();
     通过openConnetion()方法创建的HttpURLConnection对象,并没有真正执行连接操作,只是创建了一个新的实例,在进行连接前,还可以设置一些属性。
     创建了HttpURLConnection对象后,就可以使用该对象发送HTTP请求了。HTTP请求通常分为GET和POST两种。
     1、GET
     默认方式。在指定连接地址时,将要传递的参数通过“?参数名=参数值”进行传递,多个参数使用英文半角逗号分隔,然后获取流中的数据,并关闭连接即可。
     适合发送小于1024KB的数据
【18.1】
     2、POST
     使用HttpURLConnection类在发送请求时默认采用GET请求,如果要发送POST请求,需要通过其setRequestMethod()方法进行指定。      
     HttpURLConnection urlConn=(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());









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值