Android-非常棒的HTTP通讯总结
来源:互联网 发布:python 字符串 编辑:程序博客网 时间:2024/04/30 15:25
这里有一个非常棒的http通讯的总结,我看了以后茅塞顿开。
先贴代码:
01
public
class
Activity1
extends
Activity {
02
03
private
final
String DEBUG_TAG =
"System.out"
;
04
05
private
TextView mTextView;
06
private
Button mButton;
07
08
protected
void
onCreate(Bundle savedInstanceState) {
09
super
.onCreate(savedInstanceState);
10
setContentView(R.layout.main);
11
12
mTextView = (TextView) findViewById(R.id.TextView01);
13
mButton = (Button) findViewById(R.id.Button01);
14
mButton.setOnClickListener(
new
httpListener());
15
}
16
17
// 设置按钮监听器
18
class
httpListener
implements
OnClickListener {
19
public
void
onClick(View v) {
20
refresh();
21
}
22
}
23
24
private
void
refresh() {
25
String httpUrl =
"http://192.168.0.101:8080/Test/test.jsp"
;
26
// URL可以加参数
27
// String httpUrl =
28
// "http://192.168.0.101:8080/Test/test.jsp?par=abcdefg";
29
String resultData =
""
;
30
URL url =
null
;
31
try
{
32
// 创建一个URL对象
33
url =
new
URL(httpUrl);
34
}
catch
(MalformedURLException e) {
35
Log.d(DEBUG_TAG,
"create URL Exception"
);
36
}
37
// 声明HttpURLConnection对象
38
HttpURLConnection urlConn =
null
;
39
// 声明InputStreamReader对象
40
InputStreamReader in =
null
;
41
// 声明BufferedReader对象
42
BufferedReader buffer =
null
;
43
String inputLine =
null
;
44
if
(url !=
null
) {
45
try
{
46
// 使用HttpURLConnection打开连接
47
urlConn = (HttpURLConnection) url.openConnection();
48
// 得到读取的内容(流)
49
in =
new
InputStreamReader(urlConn.getInputStream());
50
// 创建BufferReader对象,输出时候用到
51
buffer =
new
BufferedReader(in);
52
// 使用循环来读取数据
53
while
((inputLine = buffer.readLine()) !=
null
) {
54
// 在每一行后面加上换行
55
resultData += inputLine +
"\n"
;
56
}
57
// 设置显示取的的内容
58
if
(resultData !=
null
&& !resultData.equals(
""
)) {
59
mTextView.setText(resultData);
60
}
else
{
61
mTextView.setText(
"读取的内容为空"
);
62
}
63
}
catch
(IOException e) {
64
e.printStackTrace();
65
}
finally
{
66
try
{
67
// 关闭InputStreamReader
68
in.close();
69
// 关闭URL连接
70
urlConn.disconnect();
71
}
catch
(IOException e) {
72
e.printStackTrace();
73
}
74
}
75
}
else
{
76
Log.d(DEBUG_TAG,
"URL is NULL"
);
77
}
78
}
79
}
第二种方式:
001
public
class
Activity2
extends
Activity {
002
003
private
final
String DEBUG_TAG =
"System.out"
;
004
005
private
TextView mTextView;
006
private
Button mButton;
007
008
protected
void
onCreate(Bundle savedInstanceState) {
009
super
.onCreate(savedInstanceState);
010
setContentView(R.layout.main);
011
012
mTextView = (TextView) findViewById(R.id.TextView01);
013
mButton = (Button) findViewById(R.id.Button01);
014
mButton.setOnClickListener(
new
httpListener());
015
}
016
017
// 设置按钮监听器
018
class
httpListener
implements
OnClickListener {
019
public
void
onClick(View v) {
020
refresh();
021
}
022
}
023
024
private
void
refresh() {
025
String httpUrl =
"http://192.168.0.101:8080/Test/test.jsp"
;
026
String resultData =
""
;
027
URL url =
null
;
028
try
{
029
// 创建一个URL对象
030
url =
new
URL(httpUrl);
031
}
catch
(MalformedURLException e) {
032
Log.d(DEBUG_TAG,
"create URL Exception"
);
033
}
034
// 声明HttpURLConnection对象
035
HttpURLConnection urlConn =
null
;
036
// 声明InputStreamReader对象
037
InputStreamReader in =
null
;
038
// 声明BufferedReader对象
039
BufferedReader buffer =
null
;
040
String inputLine =
null
;
041
// 声明DataOutputStream流
042
DataOutputStream out =
null
;
043
if
(url !=
null
) {
044
try
{
045
// 使用HttpURLConnection打开连接
046
urlConn = (HttpURLConnection) url.openConnection();
047
// 因为这个是POST请求所以要设置为true
048
urlConn.setDoInput(
true
);
049
urlConn.setDoOutput(
true
);
050
// 设置POST方式
051
urlConn.setRequestMethod(
"POST"
);
052
// POST请求不能设置缓存
053
urlConn.setUseCaches(
false
);
054
urlConn.setInstanceFollowRedirects(
false
);
055
// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
056
urlConn.setRequestProperty(
"Content-Type"
,
"application/x-www-form-urlencoded"
);
057
// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成
058
// 要注意的是connectio.getOutputStream会隐含的进行connect
059
urlConn.connect();
060
// DataOutputStream流
061
out =
new
DataOutputStream(urlConn.getOutputStream());
062
String content =
"par="
+ URLEncoder.encode(
"abcdefg"
,
"gb2312"
);
063
// 将要上传的内容写入流中
064
out.writeBytes(content);
065
// 得到读取的内容(流)
066
in =
new
InputStreamReader(urlConn.getInputStream());
067
// 创建BufferReader对象,输出时候用到
068
buffer =
new
BufferedReader(in);
069
// 使用循环来读取数据
070
while
((inputLine = buffer.readLine()) !=
null
) {
071
// 在每一行后面加上换行
072
resultData += inputLine +
"\n"
;
073
}
074
// 设置显示取的的内容
075
if
(resultData !=
null
&& !resultData.equals(
""
)) {
076
mTextView.setText(resultData);
077
}
else
{
078
mTextView.setText(
"读取的内容为空"
);
079
}
080
}
catch
(IOException e) {
081
e.printStackTrace();
082
}
finally
{
083
try
{
084
// 刷新DataOutputStream流
085
out.flush();
086
// 关闭DataOutputStream流
087
out.close();
088
// 关闭InputStreamReader
089
in.close();
090
// 关闭URL连接
091
urlConn.disconnect();
092
}
catch
(IOException e) {
093
e.printStackTrace();
094
}
095
}
096
}
else
{
097
Log.d(DEBUG_TAG,
"URL is NULL"
);
098
}
099
}
100
}
第三种方式
01
public
class
Activity3
extends
Activity{
02
private
TextView mTextView;
03
private
Button mButton;
04
05
protected
void
onCreate(Bundle savedInstanceState) {
06
super
.onCreate(savedInstanceState);
07
setContentView(R.layout.main);
08
mTextView = (TextView) findViewById(R.id.TextView01);
09
mButton = (Button) findViewById(R.id.Button01);
10
mButton.setOnClickListener(
new
httpListener());
11
}
12
13
// 设置按钮监听器
14
class
httpListener
implements
OnClickListener {
15
public
void
onClick(View v) {
16
String httpUrl =
"http://192.168.0.101:8080/Test/test.jsp?par=HttpClient_android_Get"
;
17
// HttpGet连接对象
18
HttpGet httpRequest =
new
HttpGet(httpUrl);
19
try
{
20
// 取的HttpClient对象
21
HttpClient httpclient =
new
DefaultHttpClient();
22
// 请求HttpClient,取的HttpResponse
23
HttpResponse httpResponse = httpclient.execute(httpRequest);
24
// 请求成功
25
if
(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
26
// 取的返回的字符串
27
String strResult = EntityUtils.toString(httpResponse.getEntity());
28
// 这个返回值可能会在行尾出现小方格
29
// 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。
30
String strsResult = strResult.replace(
"\r"
,
""
);
31
mTextView.setText(strsResult);
32
}
else
{
33
mTextView.setText(
"请求错误"
);
34
}
35
}
catch
(ClientProtocolException e) {
36
mTextView.setText(e.getMessage().toString());
37
}
catch
(IOException e) {
38
mTextView.setText(e.getMessage().toString());
39
}
catch
(Exception e) {
40
mTextView.setText(e.getMessage().toString());
41
}
42
}
43
}
44
}
第四种方式
01
public
class
Activity4
extends
Activity{
02
private
TextView mTextView;
03
private
Button mButton;
04
05
protected
void
onCreate(Bundle savedInstanceState) {
06
super
.onCreate(savedInstanceState);
07
setContentView(R.layout.main);
08
mTextView = (TextView) findViewById(R.id.TextView01);
09
mButton = (Button) findViewById(R.id.Button01);
10
mButton.setOnClickListener(
new
httpListener());
11
}
12
13
// 设置按钮监听器
14
class
httpListener
implements
OnClickListener {
15
public
void
onClick(View arg0) {
16
String httpUrl =
"http://192.168.0.101:8080/Test/test.jsp"
;
17
// 创建HttpPost连接对象
18
HttpPost httpRequest =
new
HttpPost(httpUrl);
19
// 使用NameValuePair来保存要传递的Post参数
20
List params =
new
ArrayList();
21
// 添加要传递的参数
22
params.add(
new
BasicNameValuePair(
"par"
,
"HttpClient_android_Post"
));
23
try
{
24
// 设置字符集
25
HttpEntity httpentity =
new
UrlEncodedFormEntity(params,
"gb2312"
);
26
// 请求httpRequest
27
httpRequest.setEntity(httpentity);
28
// 取的默认的HttpClient
29
HttpClient httpclient =
new
DefaultHttpClient();
30
// 取的HttpResponse
31
HttpResponse httpResponse = httpclient.execute(httpRequest);
32
// HttpStatus.SC_OK表示连接成功
33
if
(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
34
// 取的返回的字符串
35
String strResult = EntityUtils.toString(httpResponse.getEntity());
36
// 这个返回值可能会在行尾出现小方格
37
// 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。
38
String strsResult = strResult.replace(
"\r"
,
""
);
39
mTextView.setText(strsResult);
40
}
else
{
41
mTextView.setText(
"请求错误"
);
42
}
43
}
catch
(ClientProtocolException e) {
44
mTextView.setText(e.getMessage().toString());
45
}
catch
(IOException e) {
46
mTextView.setText(e.getMessage().toString());
47
}
catch
(Exception e) {
48
mTextView.setText(e.getMessage().toString());
49
}
50
}
51
}
52
}
- Android-非常棒的HTTP通讯总结
- Android-非常棒的HTTP通讯总结
- Android-非常棒的HTTP通讯总结
- Android-非常棒的HTTP通讯总结
- Android-非常棒的HTTP通讯总结
- Android-非常棒的HTTP通讯总结
- Android-HTTP通讯总结!
- 非常详细的unity与android之间的通讯操作
- Android中Http通讯的一般过程
- Android 动画总结,这个写的非常棒
- android之http通讯,
- android http 通讯相关
- http://blog.csdn.net/ican87/article/details/37566679#comments,关于布局属性的总结,非常棒!!
- 一个非常棒的 RTSP OVER HTTP
- 非常棒的android资料
- 非常详细的测试unity与android之间的通讯操作
- 非常详细的测试unity与android之间的通讯操作
- 非常详细的测试unity与android之间的通讯操作
- C的指针数组
- DOM range对象
- 实例讲解虚拟机3种网络模式(桥接、nat、Host-only)
- DisplayMetrics
- xml
- Android-非常棒的HTTP通讯总结
- 【索引】AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu)
- js扫雷小游戏
- firefox 新标签打开 默认页面
- Linux IPC小结
- 二叉树中路径的求解
- Extjs设置柱状图柱子颜色和每条柱子颜色
- PHP面试题
- Java多线程笔试题