本文为个人读书笔记,大部分为书中内容摘要。仅供记录和分享学习中遇到的需要留意的问题,如有相关版权问题请及时通知作者。
通过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());