【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
原创粉丝点击