这里有一个非常棒的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 = newUrlEncodedFormEntity(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通讯的更多相关文章

  1. Protobuf实现Android Socket通讯开发教程

    本节为您介绍Protobuf实现Android Socket通讯开发教程,因此,我们需要先了理一下protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式 ...

  2. [转]仿91助手的PC与android手机通讯

    仿91助手的PC与android手机通讯 原文 知道91助手和豌豆莢吧? 说到这两个东西,最让人好奇的应该是就是和手机的交互了.我之前有研究过电脑和安卓的交互,基本功能已经走通了,在这里我想分享一下. ...

  3. Android 即时通讯开发小结(二)

    <Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对IM 开发做一个全面的总结. 相关推荐阅读:. Android 即时通讯 ...

  4. Android 即时通讯开发小结(一)

    <Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对IM 开发做一个全面的总结. 相关推荐阅读:. Android 即时通讯 ...

  5. Android 线程通讯类Handler

    handler是线程通讯工具类.用于传递消息.它有两个队列: 1.消息队列 2.线程队列 消息队列使用sendMessage和HandleMessage的组合来发送和处理消息. 线程队列类似一段代码, ...

  6. Android串口通讯

    今天在整一个项目,需要利用串口通讯在网上看了好多人的帖子才稍微整出了一点头绪. 首先串口代码就是利用谷歌自己的api,将java代码放在java/android_serialport_api目录下,如 ...

  7. Android——线程通讯 Handler、Looper、Message;

    线程通讯问题 (主要用到了Handler类,Looper类和Message类以及MessageQueue) 在Android中主线程如何向子线程中发送消息的问题.让我们来想想,这其中的过程,无非就是创 ...

  8. Android——线程通讯类Handler(转)

    原文地址:http://uule.iteye.com/blog/1705951 handler是线程通讯工具类.用于传递消息.它有两个队列:1.消息队列2.线程队列 消息队列使用sendMessage ...

  9. android 蓝牙通讯编程 备忘

    1.启动App后: 判断->蓝牙是否打开(所有功能必须在打牙打开的情况下才能用) 已打开: 启动代码中的蓝牙通讯Service 未打开: 发布 打开蓝牙意图(系统),根据Activity返回进场 ...

  10. (Android 即时通讯) [悬赏],无论是谁发现一个漏洞奖励人民币1000元!

    悬赏,无论是谁发现一个漏洞奖励人民币1000元!   3Q Android 手机版即时通讯系统正式推出,可与电脑版 地灵(http://im.yunxunmi.com) 即时通讯系统互通!  适用于: ...

随机推荐

  1. 使用java api操作HDFS文件

    实现的代码如下: import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import ...

  2. OBjective-C:文件管理类NSFileManager

    文件管理类NSFileManager类:对文件进行创建.复制.重命名.删除等,一般不对文件内容进行操作. NSData类和NSMutableData类:相当于数据缓冲区  NSFileManager是 ...

  3. Informatica 常用组件Lookup之二 已连接和未连接的查找

    可以配置一个已连接的查找转换,以从映射管道中直接接收输入:您也可以配置一个未连接的查找转换,以从其它转换的表达式结果中接收输入. 已连接的查找 未连接的查找 直接从管道接收输入值. 从其它转换的 :L ...

  4. [Web前端]由cookies安全说开去

    在Web应用中,Cookie很容易成为安全问题的一部分.从以往的经验来看,对Cookie在开发过程中的使用,很多开发团队并没有形成共识或者一定的 规范,这也使得很多应用中的Cookie成为潜在的易受攻 ...

  5. GO语言基础之error

    Go错误处理 Go 语言通过内置的错误接口提供了非常简单的错误处理机制. error类型是一个接口类型,这是它的定义: type error interface { Error() string } ...

  6. MySql的入侵测试以及防范

    在做了之前的SQL SERVER之后,便很想尝试一下MYSQL的入侵测试已经防范,与大家一起分享. 总的来说,我一直在用的是MYSQL,对MYSQL比较熟悉,相比较而言,感觉MYSQL更安全,这只是我 ...

  7. GridControl 分组排序

    方法一:纯代码 this.list.gridControl.ItemsSource = lsItem; this.list.gridControl.GroupBy("GroupTitle&q ...

  8. IIS7.5配置Asp.net项目出现HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。

    近日在将一个Asp.net项目部署到IIS7.5上时却出现了HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理. 因为IIS里面使用的都是默 ...

  9. 正则 js截取时间

    项目中要把时间截取,只要年月日,不要时分秒,于是 /\d{4}-\d{1,2}-\d{1,2}/g.exec("2012-6-18 00:00:00") 或者另一种 var dat ...

  10. 【Flash 插件】时钟类插件

    1.honehone_clock人体时钟实现 原理:就是在网页上播放已写好的.SWF文件. 效果如下: 效果一:背景透明,推荐为白色或浅背景 效果二:背景白色,推荐黑色或深色背景 实现步骤: 先引用 ...