Android网络连接处理
在Android中,可以有多种方式来实现网络编程:
创建URL,并使用URLConnection/HttpURLConnection
使用HttpClient
使用WebView
创建URL,并使用URLConnection/HttpURLConnection
java.net.*下面提供了访问HTTP服务的基本功能。使用这部分接口的基本操作主要包括:
创建URL以及URLConnection/HttpURLConnection对象
1设置连接参数
2连接到服务器
3向服务器写数据
4从服务器读取数据
源码:
- try{
- //创建URL对象
- URLurl=newURL("http://t.sina.cn/fesky");
- //创建URL连接
- URLConnectionconnection=url.openConnection();
- //对于HTTP连接可以直接转换成HttpURLConnection,
- //这样就可以使用一些HTTP连接特定的方法,如setRequestMethod()等
- //HttpURLConnectionconnection
- //=(HttpURLConnection)url.openConnection(Proxy_yours);
- //设置参数
- connection.setConnectTimeout(10000);
- connection.addRequestProperty("User-Agent","J2me/MIDP2.0");
- //连接服务器
- connection.connect();
- }catch(IOExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
使用HttpClient
对于HttpClient类,可以使用HttpPost和HttpGet类以及HttpResponse来进行网络连接。
使用WebView
Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装成了WebView组件。
http://developer.android.com/guide/tutorials/views/hello-webview.html提供了一个简单的例子:
1.webview的XML定义:
- <WebView
- android:id="@+id/webview"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
2.Manifest文件中权限的设定:
- <uses-permissionandroid:name="android.permission.INTERNET"/>
3.如果想要支持JavaScript:
- webview.getSettings().setJavaScriptEnabled(true);
4.如果需要在WebView中显示网页,而不是在内置浏览器中浏览,则需要mWebView.setWebViewClient,并重写shouldOverrideUrlLoading方法。
5.如果不做任何处理,在显示你的BrowerUI时,点击系统“Back”键,整个Browser会作为一个整体“Back"到其他Activity中,而不是希望的在Browser的历史页面中Back。如果希望实现在历史页面中Back,需要在当前Activity中处理Back事件:mWebView.goBack();
- WebViewwebview;
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //获取WebView对象
- webview=(WebView)findViewById(R.id.webview);
- //使能JavaScript
- webview.getSettings().setJavaScriptEnabled(true);
- //如果需要在WebView中显示网页,而不是在内置浏览器中浏览,
- //则需要mWebView.setWebViewClient,并重写
- //shouldOverrideUrlLoading方法。
- webview.setWebViewClient(newWebViewClientDemo());
- //加载网页
- webview.loadUrl("http://t.sina.cn/fesky");
- }
- @Override
- publicbooleanonKeyDown(intkeyCode,KeyEventevent){
- //按下BACK键回到历史页面中
- if((keyCode==KeyEvent.KEYCODE_BACK)&&webview.canGoBack()){
- webview.goBack();
- returntrue;
- }
- returnsuper.onKeyDown(keyCode,event);
- }
- privateclassWebViewClientDemoextendsWebViewClient{
- @Override
- //在WebView中而不是默认浏览器中显示页面
- publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){
- view.loadUrl(url);
- returntrue;
- }
- }
-
webview.loadData(html,“text/html”,"utf-8”);
如果html中包含中文,则需要webview.loadData(URLEncoder.encode(html,encoding),mimeType,encoding);
对于本地图片或网页的显示,可以使用loadUrl,不过Url的地址前缀为file:///,如"file:///android_asset/test.htm”。