这里有一个非常棒的http通讯的总结,我看了以后茅塞顿开。
先贴代码:
01 |
public class Activity1 extends Activity { |
03 |
private final String DEBUG_TAG = "System.out"; |
05 |
private TextView mTextView; |
06 |
private Button mButton; |
08 |
protected void onCreate(Bundle savedInstanceState) { |
09 |
super.onCreate(savedInstanceState); |
10 |
setContentView(R.layout.main); |
12 |
mTextView = (TextView) findViewById(R.id.TextView01); |
13 |
mButton = (Button) findViewById(R.id.Button01); |
14 |
mButton.setOnClickListener(new httpListener()); |
18 |
class httpListener implements OnClickListener { |
19 |
public void onClick(View v) { |
24 |
private void refresh() { |
25 |
String httpUrl = "http://192.168.0.101:8080/Test/test.jsp"; |
28 |
// "http://192.168.0.101:8080/Test/test.jsp?par=abcdefg"; |
29 |
String resultData = ""; |
33 |
url = new URL(httpUrl); |
34 |
} catch (MalformedURLException e) { |
35 |
Log.d(DEBUG_TAG, "create URL Exception"); |
37 |
// 声明HttpURLConnection对象 |
38 |
HttpURLConnection urlConn = null; |
39 |
// 声明InputStreamReader对象 |
40 |
InputStreamReader in = null; |
42 |
BufferedReader buffer = null; |
43 |
String inputLine = null; |
46 |
// 使用HttpURLConnection打开连接 |
47 |
urlConn = (HttpURLConnection) url.openConnection(); |
49 |
in = new InputStreamReader(urlConn.getInputStream()); |
50 |
// 创建BufferReader对象,输出时候用到 |
51 |
buffer = new BufferedReader(in); |
53 |
while ((inputLine = buffer.readLine()) != null) { |
55 |
resultData += inputLine + "\n"; |
58 |
if (resultData != null && !resultData.equals("")) { |
59 |
mTextView.setText(resultData); |
61 |
mTextView.setText("读取的内容为空"); |
63 |
} catch (IOException e) { |
67 |
// 关闭InputStreamReader |
71 |
} catch (IOException e) { |
76 |
Log.d(DEBUG_TAG, "URL is NULL"); |
第二种方式:
001 |
public class Activity2 extends Activity { |
003 |
private final String DEBUG_TAG = "System.out"; |
005 |
private TextView mTextView; |
006 |
private Button mButton; |
008 |
protected void onCreate(Bundle savedInstanceState) { |
009 |
super.onCreate(savedInstanceState); |
010 |
setContentView(R.layout.main); |
012 |
mTextView = (TextView) findViewById(R.id.TextView01); |
013 |
mButton = (Button) findViewById(R.id.Button01); |
014 |
mButton.setOnClickListener(new httpListener()); |
018 |
class httpListener implements OnClickListener { |
019 |
public void onClick(View v) { |
024 |
private void refresh() { |
025 |
String httpUrl = "http://192.168.0.101:8080/Test/test.jsp"; |
026 |
String resultData = ""; |
030 |
url = new URL(httpUrl); |
031 |
} catch (MalformedURLException e) { |
032 |
Log.d(DEBUG_TAG, "create URL Exception"); |
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; |
045 |
// 使用HttpURLConnection打开连接 |
046 |
urlConn = (HttpURLConnection) url.openConnection(); |
047 |
// 因为这个是POST请求所以要设置为true |
048 |
urlConn.setDoInput(true); |
049 |
urlConn.setDoOutput(true); |
051 |
urlConn.setRequestMethod("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 |
061 |
out = new DataOutputStream(urlConn.getOutputStream()); |
062 |
String content = "par=" + URLEncoder.encode("abcdefg","gb2312"); |
064 |
out.writeBytes(content); |
066 |
in = new InputStreamReader(urlConn.getInputStream()); |
067 |
// 创建BufferReader对象,输出时候用到 |
068 |
buffer = new BufferedReader(in); |
070 |
while ((inputLine = buffer.readLine()) != null) { |
072 |
resultData += inputLine + "\n"; |
075 |
if (resultData != null && !resultData.equals("")) { |
076 |
mTextView.setText(resultData); |
078 |
mTextView.setText("读取的内容为空"); |
080 |
} catch (IOException e) { |
084 |
// 刷新DataOutputStream流 |
086 |
// 关闭DataOutputStream流 |
088 |
// 关闭InputStreamReader |
091 |
urlConn.disconnect(); |
092 |
} catch (IOException e) { |
097 |
Log.d(DEBUG_TAG, "URL is NULL"); |
第三种方式
01 |
public class Activity3 extends Activity{ |
02 |
private TextView mTextView; |
03 |
private Button mButton; |
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()); |
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"; |
18 |
HttpGet httpRequest = new HttpGet(httpUrl); |
21 |
HttpClient httpclient = new DefaultHttpClient(); |
22 |
// 请求HttpClient,取的HttpResponse |
23 |
HttpResponse httpResponse = httpclient.execute(httpRequest); |
25 |
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { |
27 |
String strResult = EntityUtils.toString(httpResponse.getEntity()); |
29 |
// 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。 |
30 |
String strsResult = strResult.replace("\r", ""); |
31 |
mTextView.setText(strsResult); |
33 |
mTextView.setText("请求错误"); |
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()); |
第四种方式
01 |
public class Activity4 extends Activity{ |
02 |
private TextView mTextView; |
03 |
private Button mButton; |
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()); |
14 |
class httpListener implements OnClickListener { |
15 |
public void onClick(View arg0) { |
16 |
String httpUrl = "http://192.168.0.101:8080/Test/test.jsp"; |
18 |
HttpPost httpRequest = new HttpPost(httpUrl); |
19 |
// 使用NameValuePair来保存要传递的Post参数 |
20 |
List params = new ArrayList(); |
22 |
params.add(new BasicNameValuePair("par","HttpClient_android_Post")); |
25 |
HttpEntity httpentity = newUrlEncodedFormEntity(params,"gb2312"); |
27 |
httpRequest.setEntity(httpentity); |
29 |
HttpClient httpclient = new DefaultHttpClient(); |
31 |
HttpResponse httpResponse = httpclient.execute(httpRequest); |
32 |
// HttpStatus.SC_OK表示连接成功 |
33 |
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { |
35 |
String strResult = EntityUtils.toString(httpResponse.getEntity()); |
37 |
// 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。 |
38 |
String strsResult = strResult.replace("\r", ""); |
39 |
mTextView.setText(strsResult); |
41 |
mTextView.setText("请求错误"); |
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()); |
- Protobuf实现Android Socket通讯开发教程
本节为您介绍Protobuf实现Android Socket通讯开发教程,因此,我们需要先了理一下protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式 ...
- [转]仿91助手的PC与android手机通讯
仿91助手的PC与android手机通讯 原文 知道91助手和豌豆莢吧? 说到这两个东西,最让人好奇的应该是就是和手机的交互了.我之前有研究过电脑和安卓的交互,基本功能已经走通了,在这里我想分享一下. ...
- Android 即时通讯开发小结(二)
<Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对IM 开发做一个全面的总结. 相关推荐阅读:. Android 即时通讯 ...
- Android 即时通讯开发小结(一)
<Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对IM 开发做一个全面的总结. 相关推荐阅读:. Android 即时通讯 ...
- Android 线程通讯类Handler
handler是线程通讯工具类.用于传递消息.它有两个队列: 1.消息队列 2.线程队列 消息队列使用sendMessage和HandleMessage的组合来发送和处理消息. 线程队列类似一段代码, ...
- Android串口通讯
今天在整一个项目,需要利用串口通讯在网上看了好多人的帖子才稍微整出了一点头绪. 首先串口代码就是利用谷歌自己的api,将java代码放在java/android_serialport_api目录下,如 ...
- Android——线程通讯 Handler、Looper、Message;
线程通讯问题 (主要用到了Handler类,Looper类和Message类以及MessageQueue) 在Android中主线程如何向子线程中发送消息的问题.让我们来想想,这其中的过程,无非就是创 ...
- Android——线程通讯类Handler(转)
原文地址:http://uule.iteye.com/blog/1705951 handler是线程通讯工具类.用于传递消息.它有两个队列:1.消息队列2.线程队列 消息队列使用sendMessage ...
- android 蓝牙通讯编程 备忘
1.启动App后: 判断->蓝牙是否打开(所有功能必须在打牙打开的情况下才能用) 已打开: 启动代码中的蓝牙通讯Service 未打开: 发布 打开蓝牙意图(系统),根据Activity返回进场 ...
- (Android 即时通讯) [悬赏],无论是谁发现一个漏洞奖励人民币1000元!
悬赏,无论是谁发现一个漏洞奖励人民币1000元! 3Q Android 手机版即时通讯系统正式推出,可与电脑版 地灵(http://im.yunxunmi.com) 即时通讯系统互通! 适用于: ...
随机推荐
- 使用java api操作HDFS文件
实现的代码如下: import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import ...
- OBjective-C:文件管理类NSFileManager
文件管理类NSFileManager类:对文件进行创建.复制.重命名.删除等,一般不对文件内容进行操作. NSData类和NSMutableData类:相当于数据缓冲区 NSFileManager是 ...
- Informatica 常用组件Lookup之二 已连接和未连接的查找
可以配置一个已连接的查找转换,以从映射管道中直接接收输入:您也可以配置一个未连接的查找转换,以从其它转换的表达式结果中接收输入. 已连接的查找 未连接的查找 直接从管道接收输入值. 从其它转换的 :L ...
- [Web前端]由cookies安全说开去
在Web应用中,Cookie很容易成为安全问题的一部分.从以往的经验来看,对Cookie在开发过程中的使用,很多开发团队并没有形成共识或者一定的 规范,这也使得很多应用中的Cookie成为潜在的易受攻 ...
- GO语言基础之error
Go错误处理 Go 语言通过内置的错误接口提供了非常简单的错误处理机制. error类型是一个接口类型,这是它的定义: type error interface { Error() string } ...
- MySql的入侵测试以及防范
在做了之前的SQL SERVER之后,便很想尝试一下MYSQL的入侵测试已经防范,与大家一起分享. 总的来说,我一直在用的是MYSQL,对MYSQL比较熟悉,相比较而言,感觉MYSQL更安全,这只是我 ...
- GridControl 分组排序
方法一:纯代码 this.list.gridControl.ItemsSource = lsItem; this.list.gridControl.GroupBy("GroupTitle&q ...
- IIS7.5配置Asp.net项目出现HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
近日在将一个Asp.net项目部署到IIS7.5上时却出现了HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理. 因为IIS里面使用的都是默 ...
- 正则 js截取时间
项目中要把时间截取,只要年月日,不要时分秒,于是 /\d{4}-\d{1,2}-\d{1,2}/g.exec("2012-6-18 00:00:00") 或者另一种 var dat ...
- 【Flash 插件】时钟类插件
1.honehone_clock人体时钟实现 原理:就是在网页上播放已写好的.SWF文件. 效果如下: 效果一:背景透明,推荐为白色或浅背景 效果二:背景白色,推荐黑色或深色背景 实现步骤: 先引用 ...