这里有一个非常棒的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) 即时通讯系统互通! 适用于: ...
随机推荐
- SpringMVC处理方法的数据绑定
一.SpringMVC数据绑定流程 Spring MVC通过反射机制对目标处理方法的签名进行解析,将请求消息中的信息以一定的方式转换并绑定到处理方法的入参中.数据绑定的核心部件是DataBinder, ...
- applicationContext.xml中的使用${}是代表什么意思?
在applicationContext.xml文件中,使用 ${xxx} 表示的是:调用某个变量,该变量的名称就是{xxx}里面的"xxx". 例如:在applicationC ...
- 实用的表格内省略号和换行(兼容IE6)
让连续的英文数字字符换行显示 word-break: break-all; 让单行文字超出的时候使用点点点表示 white-space: nowrap; overflow: hidden; text- ...
- MongoDB学习笔记(二)--Capped集合 && GridFS存储文件
Capped集合 Capped集合的大小是固定的,如果空间都被用完了,新添加的对象 ...
- [置顶] Android异步加载数据库和多线程编程
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名称,中国大陆地区较多人使用“安卓” ...
- (step4.1.2)hdu 1969(Pie——二分查找)
题目大意:n块馅饼分给m+1个人,每个人的馅饼必须是整块的,不能拼接,求最大的. 解题思路: 1)用总饼的体积除以总人数,得到每个人最大可以得到的V.但是每个人手中不能有两片或多片拼成的一块饼. 代码 ...
- .NET MVC自定义错误处理页面的方法
在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...
- LINUX下的Mail服务器的搭建
电子邮件是因特网上最为流行的应用之一.如同邮递员分发投递传统邮件一样,电子邮件也是异步的,也就是说人们是在方便的时候发送和阅读邮件的,无须预先与别人协同.与传统邮件不同的是,电子邮件既迅速,又易于分发 ...
- 用Java发送HTML格式邮件测试类(支持中文)
代码由纯Java写成,支持中文,一目了然,只要将Main函数中的相关信息填写正确就直接用了,便于修改,可以在此类基础上任意扩展成自己的类. 注意做HTML形式的邮件,最好把HTML,CSS都写全,只写 ...
- IOS遇到的问题总结
1.NSString *path = [[NSBundle mainBundle] pathForResource:@"desc" ofType @"plist" ...