Android 实现联网【一:简单连接】
- 格式:doc
- 大小:229.00 KB
- 文档页数:8
Android 实现联网【一:简单连接】Tomcat搭建的Struts Action。
此处Struts工程的建立略,web浏览器访问效果如下:访问url地址,界面显示index.jsp文件内容,控制台显示helloAction.action打出了hello world信息。
index.jsp源码如下:<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h1>this is a jsp page!</h1></body></html>HelloAction.java源码如下:package com.android.action;import com.framework.core.BaseAction;public class HelloAction extends BaseAction {private static final long serialVersionUID = 1L;protected String doExecute() throws Exception {System.out.println("hello world.");return SUCCESS;}}Android端开发文件说明:清单文件1:AndroidManifest.xml由于使用网络连接,所以需要在文件中追加网络访问授权:<uses-permission android:name="android.permission.INTERNET"/>AndroidManifest.xml源码如下:<?xml version="1.0"encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="use"android:versionCode="1"android:versionName="1.0"><uses-sdk android:minSdkVersion="15"/><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><activityandroid:name=".AndroidNetUseActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER"/> </intent-filter></activity></application></manifest>清单文件2:strings.xmlstrUrl存放访问的web url地址。
此处为tomcat服务器上发布的一个action连接。
http://192.168.0.46:8080/AndroidNet/helloAction.action【注意】:由于是在运行android平台的硬件设备上运行,所以url地址要使用ip地址,使用localhost是无效果的。
strings.xml源码如下:<?xml version="1.0"encoding="utf-8"?><resources><string name="app_name">AndroidNetUse</string><string name="tvUrl">Please input url:</string><string name="btnGo">Go</string><stringname="strUrl">http://192.168.0.46:8080/AndroidNet/helloAction.action</string></resources>清单文件3:main.xml页面布局文件,一个文字标签,一个url输入框,一个访问按钮。
main.xml源码如下:<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/tvUrl"/><EditTextandroid:id="@+id/etUrl"android:layout_width="fill_parent"android:layout_height="wrap_content"android:inputType="text"android:text="@string/strUrl"/><Buttonandroid:id="@+id/btnGo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="right"android:text="@string/btnGo"/></LinearLayout>清单文件4:AndroidNetUseActivity.java由于访问url的处理代码写在程序的启动主工程中,由于android开发规则的严谨度原因,需要把以下代码追加在super之前。
正式项目中,是不会在工程启动文件中直接写url访问这类代码的。
启动新的线程来处理也是一个不错的方案。
StrictMode相关内容请参照android 官方API 文档解释:/reference/android/os/StrictMode.htmlStrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() // or .detectAll() for all detectable problems.penaltyLog().build());StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());AndroidNetUseActivity.java源码如下:package use;import .HttpURLConnection;import .URL;import android.app.Activity;import android.os.Bundle;import android.os.StrictMode;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;import android.widget.Toast;public class AndroidNetUseActivity extends Activity implements OnClickListener { private EditText etUrl;public void onCreate(Bundle savedInstanceState) {StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork() // or .detectAll() for all detectable problems .penaltyLog().build());StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());super.onCreate(savedInstanceState);setContentView(yout.main);etUrl = (EditText) findViewById(R.id.etUrl);this.findViewById(R.id.btnGo).setOnClickListener(this);}public void onClick(View v) {int id = v.getId();switch(id){case R.id.btnGo:String strUrl = etUrl.getText().toString();try{//create urlURL url = new URL(strUrl);//open connectionHttpURLConnection conn = (HttpURLConnection) url.openConnection();if(conn.getResponseCode() == 200){Toast.makeText(this, "send success", 1).show();}}catch(Exception e){Log.i("AndroidNetUse", "★Connection Test Fail:"+e.getMessage());}break;}}}作者:白洋 清单文件5:AndroidNetUseActivity2.java使用线程的方式访问网络,使用handler处理UI。