这里有一个非常棒的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
}
我把它写到一个项目的4个Activity中了
有需要的下载源码看吧
猛击下载源码
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
非常实用的IDEA开发必备插件
idea开发工具实用的几个插件推荐,提高工作效率
SQL 编程语言 软件开发 -
非常棒的网络流总结
转自:http://blog.csdn.net/ruoruo_cheng/article/details/51815257二
网络流 最小割 二分图 图论 最大匹配 -
Android- AsyncTask 总结
1.回顾 上篇学习了 Android的 Handler 的知识和 异步更新 UI的操作;2.重点 (1)AsyncTask 介绍 (2
AsyncTask Handler Map数组 Android UI -
总结了大量的 Java 代码精简之道,非常棒!
优化代码
json java ide 数据 字段 -
非常棒的驱动知识总结,自己记录一下
非常棒的驱动知识总结,自己记录一下
非常棒的驱动知识 -
关于statsd写得非常棒的原文
If Engineering at Etsy has a religion,es to make a ru...
statsd UDP ide github -
2ME 非常棒的文章推荐
一。J2ME 入门经典
.net ASP.net Nokia 编程 Blog -
【转】一些非常棒的资源
介绍:Google公开发表的论文列表:数据挖掘,机器学习,自然语言处理,分布式系统,机器翻译
java git linux 数据库 Database -
一个非常棒的AutoHotKey脚本
<br />2010-10-22http://macrochen.javaeye.com/blog/791788文章
function 脚本 2010 c eclipse