14天学会安卓开发(第十天)Android网络与通讯
来源:互联网 发布:linux取证命令 编辑:程序博客网 时间:2024/05/16 01:49
14天学会安卓开发
作者:神秘的N (英文名 corder_raine)
联系方式:369428455(反馈)
交流群:284552167(示例,原文档下载)
版权为作者所有,如有转载请注明出处联系方式:369428455(反馈)
交流群:284552167(示例,原文档下载)
目录
第十天.Android网络与通信... 100
10.1 Android网络通讯介绍... 100
10.1.1 网络通讯技术... 100
10.2 Java.net 101
10.2.2主Activity. 101
10.2.3 直接获取数据... 102
10.2.4 以Get方式上传参数... 103
10.2.5 以Post方式上传参数... 103
10.3 ApacheHttpClient 105
10.3.1 使用HttpClient:主Activity. 105
10.3.2 HttpClient:HttpGet 106
10.3.3 HttpClient:HttpPost 107
10.4 装载并显示Web网页... 108
10.4.1 用线程刷新网页显示... 108
10.4.2 装载网页并显示... 109
10.5 Socket编程复习... 110
第十天.Android网络与通信
10.1 Android网络通讯介绍
10.1.1 网络通讯技术
Ø Java.net
Ø Apache HttpClient
Ø Socket技术
Ø 装载网页
Ø WiFi技术
Ø Bluetooth蓝牙
10.2 Java.net10.2.2主Activity
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
public
class
Activity01 extendsActivity{
publicvoid onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main)
Buttonbutton_http = (Button) findViewById(R.id.Button_HTTP);
/*监听button的事件信息 */
button_http.setOnClickListener(newButton.OnClickListener() {
publicvoid onClick(View v){
/*新建一个Intent对象 */
Intentintent = new Intent();
/*指定intent要启动的类 */
intent.setClass(Activity01.this,Activity02.class);
/*启动一个新的Activity*/
startActivity(intent);
/*关闭当前的Activity*/
Activity01.
this
.finish();
}
});
** Activity02是直接获取数据的demo!
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
Button button_Get = (Button)findViewById(R.id.Button_Get);
/*监听button的事件信息 */
button_Get.setOnClickListener(newButton.OnClickListener() {
publicvoid onClick(View v)
{
/*新建一个Intent对象 */
Intentintent = new Intent();
/*指定intent要启动的类 */
intent.setClass(Activity01.this,Activity03.class);
/*启动一个新的Activity*/
startActivity(intent);
/*关闭当前的Activity*/
Activity01.
this
.finish();
}
});
** Activity03是以Get方式上传参数的demo!
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
Button button_Post = (Button)findViewById(R.id.Button_Post);
/*监听button的事件信息 */
button_Post.setOnClickListener(newButton.OnClickListener() {
publicvoid onClick(View v)
{
/*新建一个Intent对象 */
Intentintent = new Intent();
/*指定intent要启动的类 */
intent.setClass(Activity01.this,Activity04.class);
/*启动一个新的Activity*/
startActivity(intent);
/*关闭当前的Activity*/
Activity01.
this
.finish();
}
});
}
}
//结束Activity1类
** Activity04是以Post方式上传参数的demo!
10.2.3 直接获取数据01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
//http地址
String httpUrl =
"http://serverip:8080/AndroidAppServer/index.jsp"
;
//获得的数据
String resultData =
""
; URLurl =
null
;
//构造一个URL对象
url =
new
URL(httpUrl);
//使用HttpURLConnection打开连接
HttpURLConnection urlConn =(HttpURLConnection) url.openConnection();
//得到读取的内容(流)
InputStreamReader in = newInputStreamReader(urlConn.getInputStream());
// 为输出创建BufferedReader
BufferedReader buffer = newBufferedReader(in);
String inputLine =
null
;
//使用循环来读取获得的数据
while
(((inputLine = buffer.readLine())!=
null
)){
resultData+= inputLine +
""
;
}
** 研究HttpURLConnectionDemo工程(Activity02.java)
** serverip要换成真实IP,不能用localhost或127.0.0.1
10.2.4 以Get方式上传参数
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
String httpUrl =
"http://192.168.1.110:8080/httpget.jsp?par=abcdefg"
;
URLurl =
new
URL(httpUrl);
//使用HttpURLConnection打开连接
HttpURLConnectionurlConn = (HttpURLConnection) url.openConnection();
//得到读取的内容(流)
InputStreamReaderin =
new
InputStreamReader(urlConn.getInputStream());
//为输出创建BufferedReader
BufferedReaderbuffer =
new
BufferedReader(in);
StringinputLine =
null
;
//使用循环来读取获得的数据
while
(((inputLine = buffer.readLine()) !=
null
)){ resultData += inputLine +
""
; }
//关闭InputStreamReader
in.close();
//关闭http连接
urlConn.disconnect();
** 研究HttpURLConnectionDemo工程(Activity03.java)
** serverip要换成真实IP,不能用localhost或127.0.0.1
10.2.5 以Post方式上传参数
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
String httpUrl =
"http://192.168.1.110:8080/httpget.jsp"
;
URL url =
new
URL(httpUrl);
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
//因为这个是post请求,设立需要设置为true
urlConn.setDoOutput(
true
);urlConn.setDoInput(
true
);
urlConn.setRequestMethod(
"POST"
);
// 设置以POST方式
urlConn.setUseCaches(
false
);
// Post 请求不能使用缓存
urlConn.setInstanceFollowRedirects(
true
);
urlConn.setRequestProperty(
"Content-Type"
,
"application/x-www-form-urlencoded"
);
urlConn.connect();
DataOutputStream out = newDataOutputStream(urlConn.getOutputStream());
String content =
"par="
+URLEncoder.encode(
"ABCDEFG"
,
"gb2312"
);
//要上传的参数
out.writeBytes(content);
//将要上传的内容写入流中
out.flush(); out.close();
//获取数据
BufferedReader reader = newBufferedReader(
new
InputStreamReader(urlConn.getInputStream()));
String inputLine =
null
;
while
(((inputLine = reader.readLine())!=
null
)){resultData += inputLine +
""
;}
reader.close();urlConn.disconnect();
** 研究HttpURLConnectionDemo工程(Activity03.java)
** serverip要换成真实IP,不能用localhost或127.0.0.1
main.xml
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:orientation
=
"vertical"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
<
TextView
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"通过下面的按钮进行不同方式的连接"
/>
<
Button
android:id
=
"@+id/Button_HTTP"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"直接获取数据"
/>
<
Button
android:id
=
"@+id/Button_Get"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"以GET方式传递数据"
/>
<
Button
android:id
=
"@+id/Button_Post"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"以POST方式传递数据"
/>
</
LinearLayout
>
AndroidManifest.xml
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<
manifest
xmlns:android
=
"http://schemas.android.com/apk/res/android"
package
=
"com.lxt008"
android:versionCode
=
"1"
android:versionName
=
"1.0"
>
<
application
android:icon
=
"@drawable/icon"
android:label
=
"@string/app_name"
>
<
activity
android:name
=
".Activity01"
android:label
=
"@string/app_name"
>
<
intent-filter
>
<
action
android:name
=
"android.intent.action.MAIN"
/>
<
category
android:name
=
"android.intent.category.LAUNCHER"
/>
</
intent-filter
>
</
activity
>
<
activity
android:name
=
"Activity02"
></
activity
>
<
activity
android:name
=
"Activity03"
></
activity
>
<
activity
android:name
=
"Activity04"
></
activity
>
</
application
>
<
uses-permission
android:name
=
"android.permission.INTERNET"
/>
<
uses-sdk
android:minSdkVersion=“7" />
</
manifest
>
10.3 ApacheHttpClient
10.3.1 使用HttpClient:主Activity
1
2
3
4
5
6
7
8
Button button_Get = (Button)findViewById(R.id.Button_Get);
button_Get.setOnClickListener(newButton.OnClickListener() {
publicvoid onClick(View v){
Intentintent =
new
Intent();
/* 新建一个Intent对象 */
/*指定intent要启动的类 */
intent.setClass(Activity01.this,Activity02.class);
startActivity(intent);/* 启动一个新的Activity*/ Activity01.this.finish();/* 关闭当前的Activity*/
}
});
1
2
3
4
5
6
7
8
9
Button button_Post = (Button)findViewById(R.id.Button_Post);
button_Post.setOnClickListener(newButton.OnClickListener() {
publicvoid onClick(View v){
Intentintent =
new
Intent();
/*指定intent要启动的类 */
intent.setClass(Activity01.
this
,Activity03.
class
);
startActivity(intent); Activity01.
this
.finish();}
});
}
** 研究ApacheHttpClientDemo工程(Activity01.java)
** serverip要换成真实IP,不能用localhost或127.0.0.1
10.3.2 HttpClient:HttpGet
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
String httpUrl =
"http://192.168.1.110:8080/httpget.jsp?par=HttpClient_android_Get"
;
//HttpGet连接对象
HttpGet httpRequest = newHttpGet(httpUrl);
//取得HttpClient对象
HttpClient httpclient = newDefaultHttpClient();
//请求HttpClient,取得HttpResponse
HttpResponse httpResponse = httpclient.execute(httpRequest);
//请求成功
if
(httpResponse.getStatusLine().getStatusCode()== HttpStatus.SC_OK){
//取得返回的字符串
StringstrResult = EntityUtils.toString(httpResponse.getEntity());
mTextView.setText(strResult);
}
else
{
mTextView.setText(
"请求错误!"
);
[align=left]}
** 研究ApacheHttpClientDemo工程(Activity02.java)
** serverip要换成真实IP,不能用localhost或127.0.0.1
10.3.3 HttpClient:HttpPost
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
String httpUrl =
"http://192.168.1.110:8080/httpget.jsp"
;
//HttpPost连接对象
HttpPost httpRequest = newHttpPost(httpUrl);
//使用NameValuePair来保存要传递的Post参数
List params = newArrayList();
//添加要传递的参数
params.add(newBasicNameValuePair(
"par"
,
"HttpClient_android_Post"
));
//设置字符集
HttpEntity httpentity = newUrlEncodedFormEntity(params,
"gb2312"
);
//请求httpRequest
httpRequest.setEntity(httpentity);
//取得默认的HttpClient
HttpClient httpclient = newDefaultHttpClient();
//取得HttpResponse
HttpResponse httpResponse =httpclient.execute(httpRequest);
if
(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
StringstrResult = EntityUtils.toString(httpResponse.getEntity());}
** 研究ApacheHttpClientDemo工程(Activity03.java)
** serverip要换成真实IP,不能用localhost或127.0.0.1
10.4 装载并显示Web网页
10.4.1 用线程刷新网页显示
01
02
03
04
05
06
07
08
09
10
public
void
onCreate(BundlesavedInstanceState){
new
Thread(mRunnable).start();
//开启线程 }
//刷新网页显示
privatevoid refresh(){
URLurl =
new
URL(
"http://192.168.1.110:8080/date.jsp"
);
HttpURLConnectionurlConn = (HttpURLConnection) url.openConnection();
InputStreamReaderin =
new
InputStreamReader(urlConn.getInputStream());
BufferedReaderbuffer =
new
BufferedReader(in);
StringinputLine =
null
;
//使用循环来读取获得的数据 //关闭InputStreamReader// 设置显示取得的内容 }
}
01
02
03
04
05
06
07
08
09
10
private
Runnable mRunnable = newRunnable() {
publicvoid run() {
while
(
true
) { Thread.sleep(
5
*
1000
);
//发送消息
mHandler.sendMessage(mHandler.obtainMessage()); };
Handler mHandler =
new
Handler() {
public
void
handleMessage(Message msg) {
super
.handleMessage(msg);
refresh();
} };
** 研究HttpURLConnectionRefresh工程
10.4.2 装载网页并显示
1
2
3
4
5
6
7
8
WebView webView = (WebView)findViewById(R.id.webview);
String html =
"Hello lxt008!!!"
;
//装载页面,你可以换成URL地址。
webView.loadDataWithBaseURL(
"Demo"
,html,
"text/html"
,
"utf-8"
,
null
);
//设置支持JS
webView.getSettings().setJavaScriptEnabled(
true
);
//设置浏览器客户端
webView.setWebChromeClient(newWebChromeClient());
10.5 Socket编程复习
Ø 以前课程中学过Socket编程。
Ø 研究SocketDemo以复习巩固Socket在Android中的使用。
示例下载
- 14天学会安卓开发(第十天)Android网络与通讯
- 14天学会安卓开发(第十天)Android网络与通讯
- 14天学会安卓开发(第十三天)Android多媒体开发
- 14天学会安卓开发(第十三天)Android多媒体开发
- 14天学会安卓开发(第十一天)Android图形技术
- 14天学会安卓开发(第十一天)Android图形技术
- 14天学会安卓开发(第六天)Android Service
- 14天学会安卓开发(第六天)Android Service
- 14天学会安卓开发(第一天)Android架构与环境搭建
- 14天学会安卓开发(第一天)Android架构与环境搭建
- 14天学会安卓开发(第三天)UI事件处理与布局管理
- 14天学会安卓开发(第七天)数据存储之SharedPreferences与文件
- 14天学会安卓开发(第九天)ContentProvider与BroadcastReceiver
- 14天学会安卓开发(第三天)UI事件处理与布局管理
- 14天学会安卓开发(第七天)数据存储之SharedPreferences与文件
- 14天学会安卓开发(第九天)ContentProvider与BroadcastReceiver
- 14天学会安卓开发(第二天)Android程序设计基础activity和intent
- 14天学会安卓开发(第十二天)Android动画技术
- 关于 Fragment (碎片)
- shm_attach() 引起 No space left on device
- 14天学会安卓开发(第九天)ContentProvider与BroadcastReceiver
- 配置Spring数据源
- gridview 动态设置列宽
- 14天学会安卓开发(第十天)Android网络与通讯
- array_count_values (函数)
- MFC几个主要的机制
- 14天学会安卓开发(第十一天)Android图形技术
- MFC编辑框自动换行,垂直滚动条自动下移
- Ext+FusionCharts图形报表展示
- 14天学会安卓开发(第十二天)Android动画技术
- Java内存分配原理
- 归并排序