Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍常用的两种网络请求方式POST,GET。首先要区别POST和GET请求

1. GET是从服务器上获取数据,POST是向服务器传送数据。

2. GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程

3. GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据

4. GET安全性非常低,POST安全性较高。但是执行效率却比POST方法好。

 

   下面分别用Post和GET方法来实现Android应用的人员登入,首先我们搭建一个服务器,这里我使用WAMP环境,使用ThinkPHP框架。详细的服务器搭建就不说了。给出主要响应代码:

 


android get网络请求数据格式 安卓网络请求方式_java


1. <?php  
2. namespace Home\Controller;  
3. use
4. class AndroidController extends
5. public function
6.     {  
7. //获取账号密码
8. $id=I('username');  
9. $pwd=I('password');  
10. $User=M('user');     
11. //查询数据库
12. $data = $User->where("NAME='$id'  AND PASSWORD='$pwd' ")->find();  
13. //登入成功
14. if($data)  
15.           {  
16. $response = array('success' => true,'msg'=>'登入成功');  
17.                 
18. $response=json_encode($response);  
19. echo  $response;//返回json格式
20.           }  
21. //登入失败
22. else
23.           {  
24. $response = array('success' => false,'msg'=>'账号或密码错误');              
25. $response=json_encode($response);  
26. echo  $response;//返回json格式
27.           }  
28.     }  
29.           
30. }

    记得添加网络权限   

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    Android的网络请求主要使用java.net包中的HttpURLConnection类,服务器与Android客户端数据交互格式为Json

1.利用POST请求方式来实现人员登入


android get网络请求数据格式 安卓网络请求方式_java


1. package
2.   
3. import
4. import
5. import
6. import
7. import
8. import
9. import
10. import
11. import
12. import
13. import
14. import
15. import
16. import
17. import
18. import
19.   
20. import
21. import
22. import
23. import
24. import
25.   
26. public class MyActivity extends
27.   
28. //请求地址
29. private static String url="http://10.0.2.2:8080/think/index.php/Home/Android";  
30. public
31.   
32. public
33.   
34. public
35.   
36. public
37.   
38. public
39.   
40. @Override
41. public void
42. super.onCreate(savedInstanceState);  
43. //设置全屏
44.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
45.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);  
46. //去除应用程序标题
47. this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
48. //设置竖屏
49.         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
50.         setContentView(R.layout.main);  
51.   
52.         start=(Button)findViewById(R.id.start_one);  
53.         username=(EditText)findViewById(R.id.username);  
54.         password=(EditText)findViewById(R.id.password);  
55. //消息处理器
56.   
57. new
58.         {  
59. @Override
60. public void
61.             {  
62. super.handleMessage(msg);  
63. switch(msg.what)  
64.                 {  
65. //登入成功
66. case 1:  
67. this, msg.getData().getString("msg"),  
68.                                 Toast.LENGTH_SHORT).show();  
69. break;  
70. //登入失败
71. case 2:  
72. this, msg.getData().getString("msg"),  
73.                                 Toast.LENGTH_SHORT).show();  
74. break;  
75.   
76.                 }  
77.             }  
78.         };  
79.   
80. new
81. @Override
82. public void
83. //是否输入账号密码
84. if(username.getText().toString().length()>0&&password.getText().toString().length()>0){  
85. //子线程可以获取UI的值,不能更改
86. new Thread(new
87. @Override
88. public void
89. try
90. new
91. if(http_url!=null)  
92.                                 {  
93. //打开一个HttpURLConnection连接
94.                                     HttpURLConnection conn = (HttpURLConnection) http_url.openConnection();  
95. 5* 1000);//设置连接超时
96. "POST");//以get方式发起请求
97. //允许输入输出流
98. true);  
99. true);  
100. false);//使用Post方式不能使用缓存
101. //获取账号密码
102. "username="
103. "&password="
104. //设置请求体的类型是文本类型
105. "Content-Type", "application/x-www-form-urlencoded");  
106. //设置请求体的长度--字节长度
107. "Content-Length",String.valueOf(params.getBytes().length) );  
108. //发送post参数
109. new BufferedWriter(new
110.                                     bw.write(params);  
111.                                     bw.close();  
112. //接收服务器响应
113. if (conn.getResponseCode() == 200) {  
114. //得到网络返回的输入流
115. new BufferedReader(new InputStreamReader(is));//转化为字符缓冲流
116.                                         data=buf.readLine();  
117.                                         buf.close();is.close();  
118. //判断登入结果
119.                                         analyse(data);  
120.                                     }  
121.                                 }  
122. catch( Exception e) {  
123.                                 e.printStackTrace();  
124.                             }  
125.                         }  
126.                     }).start();  
127.                 }  
128. else
129.                 {  
130. this, "请完整输入账号密码",  
131.                             Toast.LENGTH_SHORT).show();  
132.                 }  
133.             }  
134.         });  
135.     }  
136.   
137. public void
138.     {  
139.         System.out.println(data);  
140. try
141. new
142. "success");  
143. "msg");  
144. //登入成功
145. if(state)  
146.             {  
147. //发送消息
148. new
149. 1;  
150. new
151. "msg",msg);  
152.                 message.setData(temp);  
153.                 handler.sendMessage(message);  
154.   
155.             }  
156. //登入失败
157. else
158.             {  
159. new
160. 2;  
161. new
162. "msg",msg);  
163.                 message.setData(temp);  
164.                 handler.sendMessage(message);  
165.             }  
166. catch
167.             e.printStackTrace();  
168.         }  
169.     }  
170. }  
 
  
 2.利用GET请求方式来实现人员登入
  
 
 
 
1. package
2.   
3. import
4. import
5. import
6. import
7. import
8. import
9. import
10. import
11. import
12. import
13. import
14. import
15. import
16. import
17. import
18. import
19.   
20. import
21. import
22. import
23. import
24. import
25.   
26. public class MyActivity extends
27.   
28. public
29.   
30. public
31.   
32. public
33.   
34. public
35.   
36. public
37.   
38. @Override
39. public void
40. super.onCreate(savedInstanceState);  
41. //设置全屏
42.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
43.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);  
44. //去除应用程序标题
45. this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
46. //设置竖屏
47.         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
48.         setContentView(R.layout.main);  
49.   
50.         start=(Button)findViewById(R.id.start_one);  
51.         username=(EditText)findViewById(R.id.username);  
52.         password=(EditText)findViewById(R.id.password);  
53. //消息处理器
54.   
55. new
56.         {  
57. @Override
58. public void
59.             {  
60. super.handleMessage(msg);  
61. switch(msg.what)  
62.                 {  
63. //登入成功
64. case 1:  
65. this, msg.getData().getString("msg"),  
66.                                 Toast.LENGTH_SHORT).show();  
67. break;  
68. //登入失败
69. case 2:  
70. this, msg.getData().getString("msg"),  
71.                                 Toast.LENGTH_SHORT).show();  
72. break;  
73.   
74.                 }  
75.             }  
76.         };  
77.   
78. new
79. @Override
80. public void
81. //是否输入账号密码
82. if(username.getText().toString().length()>0&&password.getText().toString().length()>0){  
83. //子线程可以获取UI的值,不能更改
84. new Thread(new
85. @Override
86. public void
87. try
88. //请求地址--
89. "http://10.0.2.2:8080/think/index.php/Home/Android?"+ "username=" + URLEncoder.encode(username.getText().toString(), "UTF-8")  
90. "&password=" + URLEncoder.encode(password.getText().toString(), "UTF-8");  
91. new
92. if(http_url!=null)  
93.                                 {  
94. //打开一个HttpURLConnection连接
95.                                     HttpURLConnection conn = (HttpURLConnection) http_url.openConnection();  
96. 5* 1000);//设置连接超时
97. "GET");//以get方式发起请求
98. //允许输入流
99. true);  
100. //接收服务器响应
101. if (conn.getResponseCode() == 200) {  
102. //得到网络返回的输入流
103. new BufferedReader(new InputStreamReader(is));//转化为字符缓冲流
104.                                         data=buf.readLine();  
105.                                         buf.close();is.close();  
106. //判断登入结果
107.                                         analyse(data);  
108.                                     }  
109.                                 }  
110. catch( Exception e) {  
111.                                 e.printStackTrace();  
112.                             }  
113.                         }  
114.                     }).start();  
115.                 }  
116. else
117.                 {  
118. this, "请完整输入账号密码",  
119.                             Toast.LENGTH_SHORT).show();  
120.                 }  
121.             }  
122.         });  
123.     }  
124.   
125. public void
126.     {  
127.         System.out.println(data);  
128. try
129. new
130. "success");  
131. "msg");  
132. //登入成功
133. if(state)  
134.             {  
135. //发送消息
136. new
137. 1;  
138. new
139. "msg",msg);  
140.                 message.setData(temp);  
141.                 handler.sendMessage(message);  
142.   
143.             }  
144. //登入失败
145. else
146.             {  
147. new
148. 2;  
149. new
150. "msg",msg);  
151.                 message.setData(temp);  
152.                 handler.sendMessage(message);  
153.             }  
154. catch
155.             e.printStackTrace();  
156.         }  
157.     }  
158. }


 

 

运行结果:


android get网络请求数据格式 安卓网络请求方式_Android网络请求_03


 

 


android get网络请求数据格式 安卓网络请求方式_android get网络请求数据格式_04