这里有一个非常棒的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 }

最新文章

  1. 《3D Math Primer for Graphics and Game Development》读书笔记1
  2. 【grunt第三弹】grunt在前端实际项目中的应用
  3. 装tomcat和nginx心得
  4. 冒泡算法应用(坐标Y值降序X值升序)
  5. ubunu下用命令设置壁纸
  6. JAVA 调用命令并输出
  7. IOS中货币高精度要求使用NSDecialNumber、
  8. Oracle char 查询问题
  9. perl 访问网站一些useragent的设置
  10. 巧妙使用Firebug插件,快速监控网站打开缓慢的原因
  11. angular $compile的使用
  12. Mac下MySql初始密码设置及mysql数据库操作
  13. ORCFILE IN HDP 2: BETTER COMPRESSION, BETTER PERFORMANCE
  14. windows上,任务管理器中,进程命令行太长怎么办
  15. GAN (Generative Adversarial Network)
  16. Unity3D学习笔记(三十三):矩阵
  17. Go语言简单学习
  18. Python int操作
  19. MySQL->复制表[20180509]
  20. centos7 samba匿名访问设置

热门文章

  1. Java IO 体系结构
  2. 巧妙利用函数的惰性载入提高javascript 代码性能
  3. SQL基础(一):SQL语法和命令
  4. IOS info.plist配置文件
  5. Android实现随机验证码——自定义View
  6. Android -- Drawable && Bitmap
  7. Android -- 获取IP和MAC地址
  8. 【Javascript Demo】无刷新预览所选择的图片
  9. ArcGIS按字段属性分割文件
  10. fcntl的区域锁定