第九章 看看精彩世界——使用网络技术
我们需要考虑如何利用网络来编写更加出色的应用程序,像qq,微博,微信等常见的应用都会大量使用网络技术。本章主要将入如何在手机端使用HTTP协议和服务器进行网络交互,并对服务器返回的数据进行解析,这也是Android中最常使用到的网络技术。
9.1 WebView的用法
有时候我们可能会碰到一些比较特殊的需求,比如说要求在应用程序里展示一些网页。但是需求里又明确指出,不允许打开系统浏览器,而我们当然也不可能自己去编写一个浏览器出来,这时候怎么办呢?
Android提供了一个WebView控件,借助它我们就可以在自己的应用程序里嵌入一个浏览器,从而非常轻松的展示各种各样的网页。
//新建一个WebViewTest项目
//修改activity_main文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView //给它设置一个id,并让它充满整个屏幕
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
//这段代码的作用是,当需要从一个网页跳转到另一个网页时,我们希望目标网页仍然在当前WebView中显示,而不是打开浏览器
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.web_view);
webView.getSetting().setJavaScriptEnabled(true); //getSetting设置浏览器属性,setJavaScriptEnabled让WebView支持JavaScript脚本
webView.setWebViewClient(new WebViewClient()); //调用setWebViewClient来获取WebViewClient的实例
webView.loadUrl("http://www.baidu.com");
}
}
//最后需要注意的是,由于本程序使用到了网络功能,而访问网络是需要声明权限的,因此我们还需要修改AndroidManifest文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.webviewtest">
<user-permission android:name="android.perrmission.INTERNET" />
...
</manifest>
9.2 使用HTTP协议访问网络
HTTP协议的工作原理非常简单,就是客户端向服务器发出一条HTTP请求,服务器收到请求之后会返回一些数据给客户端&