- 浏览: 161646 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yzd_java:
你的uploadFile.html怎么没有贴出来
uploadify 3.2.1+spring mvc上传文件 -
u013107014:
不能多选,不能阅览,搞J8
uploadify 3.2.1+spring mvc上传文件 -
u013107014:
什么JB鬼?
uploadify 3.2.1+spring mvc上传文件 -
11104078:
uploadify 3.2.1+spring mvc上传文件 -
xujun738:
楼主,为什么我按照你说的做,只生成了一级,点展开树结点的时候就 ...
zk生成多级树
转自:http://www.linuxidc.com/Linux/2011-04/35009.htm
(http://www.blogjava.net/changcheng/archive/2010/03/04/314496.html)
Android 网络编程---STRUTS2,JSON,HttpClient
在Android开发过程中,我们需要访问网络上的Web资源,比如网络上的WEB请求。在这里Android就好像是一个终端,可以用来接收Web服务器端发送过来的数据。下面我以Struts2作为Web服务器端的Web框架。来说明Android客户端接收Web请求的过程。
首先,我们要配置Web服务器端,添加Struts2所需要的JAR包(包括JSON包)
下面是服务器端所要配置的JAR包,如下所示:
我们看看json包,有如下: json-lib-**.jdk15.jar,struts2-json-plugin-***.jar,ezmorph-**.jar
接下配置web.xml文件,代码如下所示:
1. <!-- 定义Struts2的核心控制器:FilterDispatcher -->
2. <filter>
3. <!-- 定义核心Filter的名称 -->
4. <filter-name>struts2</filter-name>
5. <!-- 定义Filter的实现类 -->
6. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
7. </filter>
8.
9. <filter-mapping>
10. <filter-name>struts2</filter-name>
11. <url-pattern>/*</url-pattern>
12. </filter-mapping>
添加完JAR包后。我们来配置一下struts.xml文件,这个文件存放在src根目录下面,代码如下所示:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE struts PUBLIC
3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4. "http://struts.apache.org/dtds/struts-2.0.dtd">
5. <struts>
6. <!-- setting encoding,DynamicMethod,language
7. <constant name="struts.custom.i18n.resources" value="messageResource"></constant>
8. -->
9. <constant name="struts.i18n.encoding" value="UTF-8"></constant>
10. <constant name="struts.enable.DynamicMethodInvocation"
11. value="true">
12. </constant>
13. <!--
14. truts.enable.DynamicMethodInvocation = true,-动态方法调用,
15. 为true时,就可以在struts.xml配置“*”的通配符,来调用action里的方法
16. -->
17. <!-- add package here extends="struts-default"-->
18. <package name="dongzi" extends="json-default"><!--需要将struts-default改为json-default-->
19. <!-- setting action -->
20. <action name="login" class="com.dongzi.action.LoginAction"
21. method="login">
22. <result type="json"></result>
23. <!--返回值类型设置为json,不设置返回页面-->
24. </action>
25. </package>
26. </struts>
看看这个action
<action name="login" class="com.dongzi.action.LoginAction"
method="login">
<result type="json"></result>
<!--返回值类型设置为json,不设置返回页面-->
</action>
返回的是json 数据。而且是由LoginAction类去处理,它存放在com.dongzi.action下面。LoginAction类的代码如下:
1. public class LoginAction extends ActionSupport implements ServletRequestAware,
2. ServletResponseAware {
3. /**
4. *
5. */
6. private static final long serialVersionUID = 1L;
7. HttpServletRequest request;
8. HttpServletResponse response;
9. public void setServletRequest(HttpServletRequest request) {
10. this.request = request;
11. }
12. public void setServletResponse(HttpServletResponse response) {
13. this.response = response;
14. }
15. public void login() {
16. try {
17. // HttpServletRequest request =ServletActionContext.getRequest();
18. // HttpServletResponse response=ServletActionContext.getResponse();
19. this.response.setContentType("text/html;charset=utf-8");
20. this.response.setCharacterEncoding("UTF-8");
21. // 将要返回的实体对象进行json处理
22. // JSONObject json=JSONObject.fromObject(this.getUsername());
23. // 输出格式如:{"id":1, "username":"zhangsan", "pwd":"123"}
24. // System.out.println(json);
25.
26. // this.response.getWriter().write(json.toString());
27.
28. //{"username":"mingg","password":"123"}
29. JSONObject json=new JSONObject();
30. // json.put("username", "mingg");
31. // json.put("password","123");
32.
33.
34.
35. //【这里在JSON中包含一个Map】
36. Map map=new HashMap<Object, String>();
37. map.put("username", "xiaomingg");
38. map.put("password", "1234");
39. map.put("state", "1");
40. json.put("userbean", map);
41.
42. response.getWriter().write(json.toString());
43. ////{"userbean":{"username":"100196","password":"1234453","State":1}}
44.
45.
46. /**
47. * 值的数组
48.
49. {"people": [
50. {"username":"mingg","password":"123","email":"172@qq.com"},
51.
52. {"username":"jie","password":"111","email":"172@sina.com"},
53.
54. {"username":"yong","password":"1232","email":"1sa@qq.com"}
55. ]}
56.
57. */
58.
59.
60.
61. // JSONArray jsonArray=new JSONArray();
62. //
63. // JSONObject json=new JSONObject();
64. // json.put("username", "mingg");
65. // json.put("password","123");
66. // json.put("email", "172@qq.com");
67. //
68. // JSONObject json1=new JSONObject();
69. // json1.put("username", "jie");
70. // json1.put("password","111");
71. // json1.put("email", "172@sina.com");
72. //
73. // JSONObject json2=new JSONObject();
74. // json2.put("username", "yong");
75. // json2.put("password","1232");
76. // json2.put("email", "1sa@qq.com");
77. //
78. // jsonArray.add(0, json);
79. // jsonArray.add(1, json1);
80. // jsonArray.add(2, json2);
81. //
82. //
83. // JSONObject alObject=new JSONObject();
84. // alObject.put("people", jsonArray);
85.
86.
87.
88. /***
89. *{ "programmers": [
90. * {"username":"mingg","password":"123","email":"172@qq.com"},
91. *
92. * {"username":"jie","password":"111","email":"172@sina.com"},
93. *
94. * {"username":"yong","password":"1232","email":"1sa@qq.com"}],
95. * "authors": [
96. * {"username":"mingg","password":"123","genre":"science fiction"},
97. *
98. * {"username":"jie","password":"111","genre":"fantasy"},
99. *
100. * {"username":"yong","password":"1232","genre":"christian fiction"}],
101. * "musicians": [
102. * {"username":"mingg","password":"123","instrument":"guitar"},
103. *
104. * {"username":"jie","password":"111","instrument":"piano"},
105. *
106. * {"username":"yong","password":"1232","instrument":"flute"}]
107. * }
108. *
109. */
110.
111.
112. // JSONArray jsonArray=new JSONArray();
113. //
114. // JSONObject json=new JSONObject();
115. // json.put("username", "mingg");
116. // json.put("password","123");
117. // json.put("email", "172@qq.com");
118. //
119. // JSONObject json1=new JSONObject();
120. // json1.put("username", "jie");
121. // json1.put("password","111");
122. // json1.put("email", "172@sina.com");
123. //
124. // JSONObject json2=new JSONObject();
125. // json2.put("username", "yong");
126. // json2.put("password","1232");
127. // json2.put("email", "1sa@qq.com");
128. //
129. // jsonArray.add(0, json);
130. // jsonArray.add(1, json1);
131. // jsonArray.add(2, json2);
132. //
133. //
134. //
135. // JSONArray jsonArray2=new JSONArray();
136. //
137. // JSONObject json20=new JSONObject();
138. // json20.put("username", "mingg");
139. // json20.put("password","123");
140. // json20.put("genre", "science fiction");
141. //
142. // JSONObject json21=new JSONObject();
143. // json21.put("username", "jie");
144. // json21.put("password","111");
145. // json21.put("genre", "fantasy");
146. //
147. // JSONObject json22=new JSONObject();
148. // json22.put("username", "yong");
149. // json22.put("password","1232");
150. // json22.put("genre", "christian fiction");
151. //
152. // jsonArray2.add(0, json20);
153. // jsonArray2.add(1, json21);
154. // jsonArray2.add(2, json22);
155. //
156. //
157. // JSONArray jsonArray3=new JSONArray();
158. //
159. // JSONObject json30=new JSONObject();
160. // json30.put("username", "mingg");
161. // json30.put("password","123");
162. // json30.put("instrument", "guitar");
163. //
164. // JSONObject json31=new JSONObject();
165. // json31.put("username", "jie");
166. // json31.put("password","111");
167. // json31.put("instrument", "piano");
168. //
169. // JSONObject json32=new JSONObject();
170. // json32.put("username", "yong");
171. // json32.put("password","1232");
172. // json32.put("instrument", "flute");//笛
173. //
174. // jsonArray3.add(0, json30);
175. // jsonArray3.add(1, json31);
176. // jsonArray3.add(2, json32);
177. //
178. //
179. // JSONObject alObject=new JSONObject();
180. // alObject.put("programmers", jsonArray);
181. // alObject.put("authors", jsonArray2);
182. // alObject.put("musicians", jsonArray3);
183.
184.
185. /**
186. * yong:1232:1sa@qq.com
187. */
188. //获取任意节点的值:试例,第个节点,第三个子节点
189.
190. // JSONArray jsonArrayt11 = (JSONArray) alObject.get("programmers");
191. //
192. // JSONObject jsonObject11=(JSONObject)jsonArrayt11.get(2);
193. //
194. // String username=jsonObject11.getString("username");
195. // String password=jsonObject11.getString("password");
196. // String email=jsonObject11.getString("email");
197. //
198. // StringBuffer sBuffer=new StringBuffer();
199. // sBuffer.append(username+":").append(password+":").append(email);
200.
201.
202. // response.getWriter().write(username.toString());
203.
204.
205.
206.
207. /**
208. * JSONObject json=new JSONObject(); json.put("login", "login");
209. * response.setContentType("text/html;charset=utf-8");
210. * System.out.println(json); byte[] jsonBytes =
211. * json.toString().getBytes("utf-8");
212. * response.setContentLength(jsonBytes.length);
213. * response.getOutputStream().write(jsonBytes);
214. */
215.
216. // JSONObject json=new JSONObject();
217. // json.put("login", "login");
218. // byte[] jsonBytes = json.toString().getBytes("utf-8");
219. // response.setContentType("text/html;charset=utf-8");
220. // response.setContentLength(jsonBytes.length);
221. // response.getOutputStream().write(jsonBytes);
222. // response.getOutputStream().flush();
223. // response.getOutputStream().close();
224.
225. } catch (Exception e) {
226. e.printStackTrace();
227. }
228. // return null;
229. }
230. }
我下面简单说一下JSON解析过程。
JSONObject json=new JSONObject();
//【这里在JSON中包含一个Map】
Map map=new HashMap<Object, String>();
map.put("username", "xiaomingg");
map.put("password", "1234");
map.put("state", "1");
json.put("userbean", map);
response.getWriter().write(json.toString());
通过访问http://localhost:8888/AndroidServerApp/login.action,得到如下JSON数据:
服务器端的配置完成了。下面我来配置Android客户端了。
由于Android内置提拱了解析JSON数据的包。所以就不需要使用第三方包了
Android 访问网络资源的代码如下所示:
1. private static String url = "http://10.0.2.2:8888/AndroidServerApp/login.action";
2. getPDAServerData(url);
3. private void getPDAServerData(String url) {
4. HttpClient client = new DefaultHttpClient();
5. //提拱默认的HttpClient实现
6. HttpPost request;
7. try {
8. request = new HttpPost(new URI(url));
9. HttpResponse response = client.execute(request);
10. // 判断请求是否成功
11. if (response.getStatusLine().getStatusCode() == 200) { //200表示请求成功
12. HttpEntity entity = response.getEntity();
13. if (entity != null) {
14. String out = EntityUtils.toString(entity);
15. JSONObject jsonObject;
16. String username = "";
17. String password = "";
18. String stateStr="";
19.
20. UserBean userBean=new UserBean();
21. try {
22.
23. //{"userbean":{"username":"100196","password":"1234453","State":1}}
24. //JSONObject jsonObject = new JSONObject(builder.toString()).getJSONObject("userbean");
25.
26. jsonObject = new JSONObject(out).getJSONObject("userbean");
27.
28.
29. userBean.setUsername(jsonObject.getString("username"));
30. userBean.setPassword( jsonObject.getString("password"));
31. userBean.setState(Integer.parseInt(jsonObject.getString("state")));
32.
33.
34.
35. } catch (JSONException e) {
36. // TODO Auto-generated catch block
37. e.printStackTrace();
38. }
39. new AlertDialog.Builder(this).setMessage(
40. userBean.getUsername() + ":" + userBean.getState()).create().show();
41. }
42. }
43. } catch (URISyntaxException e) {
44. e.printStackTrace();
45. new AlertDialog.Builder(this).setMessage(e.getMessage()).create()
46. .show();
47. } catch (ClientProtocolException e) {
48. e.printStackTrace();
49. new AlertDialog.Builder(this).setMessage(e.getMessage()).create()
50. .show();
51. } catch (IOException e) {
52. e.printStackTrace();
53. new AlertDialog.Builder(this).setMessage(e.getMessage()).create()
54. .show();
55. }
56. }
里面的IP地址:10.0.2.2,代表着手机模拟器本地的地址,相当于localhost,但不能使用localhost,或者127.0.0.1,因不是在PC机上测试,而是在手机AVD上测试之。
而UserBean.java,它就是一个JAVABEAN,代码如下所示:
1. package po;
2. public class UserBean {
3. private String username;
4. private String password;
5. private int state;
6. public String getUsername() {
7. return username;
8. }
9. public void setUsername(String username) {
10. this.username = username;
11. }
12. public String getPassword() {
13. return password;
14. }
15. public void setPassword(String password) {
16. this.password = password;
17. }
18. public int getState() {
19. return state;
20. }
21. public void setState(int state) {
22. this.state = state;
23. }
24. }
注恴必须AndroidManifest.xml中加入如下代码,不然Android就不能访问web资源。
1. <uses-permission Android:name="android.permission.INTERNET" />
(http://www.blogjava.net/changcheng/archive/2010/03/04/314496.html)
Android 网络编程---STRUTS2,JSON,HttpClient
在Android开发过程中,我们需要访问网络上的Web资源,比如网络上的WEB请求。在这里Android就好像是一个终端,可以用来接收Web服务器端发送过来的数据。下面我以Struts2作为Web服务器端的Web框架。来说明Android客户端接收Web请求的过程。
首先,我们要配置Web服务器端,添加Struts2所需要的JAR包(包括JSON包)
下面是服务器端所要配置的JAR包,如下所示:
我们看看json包,有如下: json-lib-**.jdk15.jar,struts2-json-plugin-***.jar,ezmorph-**.jar
接下配置web.xml文件,代码如下所示:
1. <!-- 定义Struts2的核心控制器:FilterDispatcher -->
2. <filter>
3. <!-- 定义核心Filter的名称 -->
4. <filter-name>struts2</filter-name>
5. <!-- 定义Filter的实现类 -->
6. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
7. </filter>
8.
9. <filter-mapping>
10. <filter-name>struts2</filter-name>
11. <url-pattern>/*</url-pattern>
12. </filter-mapping>
添加完JAR包后。我们来配置一下struts.xml文件,这个文件存放在src根目录下面,代码如下所示:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE struts PUBLIC
3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4. "http://struts.apache.org/dtds/struts-2.0.dtd">
5. <struts>
6. <!-- setting encoding,DynamicMethod,language
7. <constant name="struts.custom.i18n.resources" value="messageResource"></constant>
8. -->
9. <constant name="struts.i18n.encoding" value="UTF-8"></constant>
10. <constant name="struts.enable.DynamicMethodInvocation"
11. value="true">
12. </constant>
13. <!--
14. truts.enable.DynamicMethodInvocation = true,-动态方法调用,
15. 为true时,就可以在struts.xml配置“*”的通配符,来调用action里的方法
16. -->
17. <!-- add package here extends="struts-default"-->
18. <package name="dongzi" extends="json-default"><!--需要将struts-default改为json-default-->
19. <!-- setting action -->
20. <action name="login" class="com.dongzi.action.LoginAction"
21. method="login">
22. <result type="json"></result>
23. <!--返回值类型设置为json,不设置返回页面-->
24. </action>
25. </package>
26. </struts>
看看这个action
<action name="login" class="com.dongzi.action.LoginAction"
method="login">
<result type="json"></result>
<!--返回值类型设置为json,不设置返回页面-->
</action>
返回的是json 数据。而且是由LoginAction类去处理,它存放在com.dongzi.action下面。LoginAction类的代码如下:
1. public class LoginAction extends ActionSupport implements ServletRequestAware,
2. ServletResponseAware {
3. /**
4. *
5. */
6. private static final long serialVersionUID = 1L;
7. HttpServletRequest request;
8. HttpServletResponse response;
9. public void setServletRequest(HttpServletRequest request) {
10. this.request = request;
11. }
12. public void setServletResponse(HttpServletResponse response) {
13. this.response = response;
14. }
15. public void login() {
16. try {
17. // HttpServletRequest request =ServletActionContext.getRequest();
18. // HttpServletResponse response=ServletActionContext.getResponse();
19. this.response.setContentType("text/html;charset=utf-8");
20. this.response.setCharacterEncoding("UTF-8");
21. // 将要返回的实体对象进行json处理
22. // JSONObject json=JSONObject.fromObject(this.getUsername());
23. // 输出格式如:{"id":1, "username":"zhangsan", "pwd":"123"}
24. // System.out.println(json);
25.
26. // this.response.getWriter().write(json.toString());
27.
28. //{"username":"mingg","password":"123"}
29. JSONObject json=new JSONObject();
30. // json.put("username", "mingg");
31. // json.put("password","123");
32.
33.
34.
35. //【这里在JSON中包含一个Map】
36. Map map=new HashMap<Object, String>();
37. map.put("username", "xiaomingg");
38. map.put("password", "1234");
39. map.put("state", "1");
40. json.put("userbean", map);
41.
42. response.getWriter().write(json.toString());
43. ////{"userbean":{"username":"100196","password":"1234453","State":1}}
44.
45.
46. /**
47. * 值的数组
48.
49. {"people": [
50. {"username":"mingg","password":"123","email":"172@qq.com"},
51.
52. {"username":"jie","password":"111","email":"172@sina.com"},
53.
54. {"username":"yong","password":"1232","email":"1sa@qq.com"}
55. ]}
56.
57. */
58.
59.
60.
61. // JSONArray jsonArray=new JSONArray();
62. //
63. // JSONObject json=new JSONObject();
64. // json.put("username", "mingg");
65. // json.put("password","123");
66. // json.put("email", "172@qq.com");
67. //
68. // JSONObject json1=new JSONObject();
69. // json1.put("username", "jie");
70. // json1.put("password","111");
71. // json1.put("email", "172@sina.com");
72. //
73. // JSONObject json2=new JSONObject();
74. // json2.put("username", "yong");
75. // json2.put("password","1232");
76. // json2.put("email", "1sa@qq.com");
77. //
78. // jsonArray.add(0, json);
79. // jsonArray.add(1, json1);
80. // jsonArray.add(2, json2);
81. //
82. //
83. // JSONObject alObject=new JSONObject();
84. // alObject.put("people", jsonArray);
85.
86.
87.
88. /***
89. *{ "programmers": [
90. * {"username":"mingg","password":"123","email":"172@qq.com"},
91. *
92. * {"username":"jie","password":"111","email":"172@sina.com"},
93. *
94. * {"username":"yong","password":"1232","email":"1sa@qq.com"}],
95. * "authors": [
96. * {"username":"mingg","password":"123","genre":"science fiction"},
97. *
98. * {"username":"jie","password":"111","genre":"fantasy"},
99. *
100. * {"username":"yong","password":"1232","genre":"christian fiction"}],
101. * "musicians": [
102. * {"username":"mingg","password":"123","instrument":"guitar"},
103. *
104. * {"username":"jie","password":"111","instrument":"piano"},
105. *
106. * {"username":"yong","password":"1232","instrument":"flute"}]
107. * }
108. *
109. */
110.
111.
112. // JSONArray jsonArray=new JSONArray();
113. //
114. // JSONObject json=new JSONObject();
115. // json.put("username", "mingg");
116. // json.put("password","123");
117. // json.put("email", "172@qq.com");
118. //
119. // JSONObject json1=new JSONObject();
120. // json1.put("username", "jie");
121. // json1.put("password","111");
122. // json1.put("email", "172@sina.com");
123. //
124. // JSONObject json2=new JSONObject();
125. // json2.put("username", "yong");
126. // json2.put("password","1232");
127. // json2.put("email", "1sa@qq.com");
128. //
129. // jsonArray.add(0, json);
130. // jsonArray.add(1, json1);
131. // jsonArray.add(2, json2);
132. //
133. //
134. //
135. // JSONArray jsonArray2=new JSONArray();
136. //
137. // JSONObject json20=new JSONObject();
138. // json20.put("username", "mingg");
139. // json20.put("password","123");
140. // json20.put("genre", "science fiction");
141. //
142. // JSONObject json21=new JSONObject();
143. // json21.put("username", "jie");
144. // json21.put("password","111");
145. // json21.put("genre", "fantasy");
146. //
147. // JSONObject json22=new JSONObject();
148. // json22.put("username", "yong");
149. // json22.put("password","1232");
150. // json22.put("genre", "christian fiction");
151. //
152. // jsonArray2.add(0, json20);
153. // jsonArray2.add(1, json21);
154. // jsonArray2.add(2, json22);
155. //
156. //
157. // JSONArray jsonArray3=new JSONArray();
158. //
159. // JSONObject json30=new JSONObject();
160. // json30.put("username", "mingg");
161. // json30.put("password","123");
162. // json30.put("instrument", "guitar");
163. //
164. // JSONObject json31=new JSONObject();
165. // json31.put("username", "jie");
166. // json31.put("password","111");
167. // json31.put("instrument", "piano");
168. //
169. // JSONObject json32=new JSONObject();
170. // json32.put("username", "yong");
171. // json32.put("password","1232");
172. // json32.put("instrument", "flute");//笛
173. //
174. // jsonArray3.add(0, json30);
175. // jsonArray3.add(1, json31);
176. // jsonArray3.add(2, json32);
177. //
178. //
179. // JSONObject alObject=new JSONObject();
180. // alObject.put("programmers", jsonArray);
181. // alObject.put("authors", jsonArray2);
182. // alObject.put("musicians", jsonArray3);
183.
184.
185. /**
186. * yong:1232:1sa@qq.com
187. */
188. //获取任意节点的值:试例,第个节点,第三个子节点
189.
190. // JSONArray jsonArrayt11 = (JSONArray) alObject.get("programmers");
191. //
192. // JSONObject jsonObject11=(JSONObject)jsonArrayt11.get(2);
193. //
194. // String username=jsonObject11.getString("username");
195. // String password=jsonObject11.getString("password");
196. // String email=jsonObject11.getString("email");
197. //
198. // StringBuffer sBuffer=new StringBuffer();
199. // sBuffer.append(username+":").append(password+":").append(email);
200.
201.
202. // response.getWriter().write(username.toString());
203.
204.
205.
206.
207. /**
208. * JSONObject json=new JSONObject(); json.put("login", "login");
209. * response.setContentType("text/html;charset=utf-8");
210. * System.out.println(json); byte[] jsonBytes =
211. * json.toString().getBytes("utf-8");
212. * response.setContentLength(jsonBytes.length);
213. * response.getOutputStream().write(jsonBytes);
214. */
215.
216. // JSONObject json=new JSONObject();
217. // json.put("login", "login");
218. // byte[] jsonBytes = json.toString().getBytes("utf-8");
219. // response.setContentType("text/html;charset=utf-8");
220. // response.setContentLength(jsonBytes.length);
221. // response.getOutputStream().write(jsonBytes);
222. // response.getOutputStream().flush();
223. // response.getOutputStream().close();
224.
225. } catch (Exception e) {
226. e.printStackTrace();
227. }
228. // return null;
229. }
230. }
我下面简单说一下JSON解析过程。
JSONObject json=new JSONObject();
//【这里在JSON中包含一个Map】
Map map=new HashMap<Object, String>();
map.put("username", "xiaomingg");
map.put("password", "1234");
map.put("state", "1");
json.put("userbean", map);
response.getWriter().write(json.toString());
通过访问http://localhost:8888/AndroidServerApp/login.action,得到如下JSON数据:
服务器端的配置完成了。下面我来配置Android客户端了。
由于Android内置提拱了解析JSON数据的包。所以就不需要使用第三方包了
Android 访问网络资源的代码如下所示:
1. private static String url = "http://10.0.2.2:8888/AndroidServerApp/login.action";
2. getPDAServerData(url);
3. private void getPDAServerData(String url) {
4. HttpClient client = new DefaultHttpClient();
5. //提拱默认的HttpClient实现
6. HttpPost request;
7. try {
8. request = new HttpPost(new URI(url));
9. HttpResponse response = client.execute(request);
10. // 判断请求是否成功
11. if (response.getStatusLine().getStatusCode() == 200) { //200表示请求成功
12. HttpEntity entity = response.getEntity();
13. if (entity != null) {
14. String out = EntityUtils.toString(entity);
15. JSONObject jsonObject;
16. String username = "";
17. String password = "";
18. String stateStr="";
19.
20. UserBean userBean=new UserBean();
21. try {
22.
23. //{"userbean":{"username":"100196","password":"1234453","State":1}}
24. //JSONObject jsonObject = new JSONObject(builder.toString()).getJSONObject("userbean");
25.
26. jsonObject = new JSONObject(out).getJSONObject("userbean");
27.
28.
29. userBean.setUsername(jsonObject.getString("username"));
30. userBean.setPassword( jsonObject.getString("password"));
31. userBean.setState(Integer.parseInt(jsonObject.getString("state")));
32.
33.
34.
35. } catch (JSONException e) {
36. // TODO Auto-generated catch block
37. e.printStackTrace();
38. }
39. new AlertDialog.Builder(this).setMessage(
40. userBean.getUsername() + ":" + userBean.getState()).create().show();
41. }
42. }
43. } catch (URISyntaxException e) {
44. e.printStackTrace();
45. new AlertDialog.Builder(this).setMessage(e.getMessage()).create()
46. .show();
47. } catch (ClientProtocolException e) {
48. e.printStackTrace();
49. new AlertDialog.Builder(this).setMessage(e.getMessage()).create()
50. .show();
51. } catch (IOException e) {
52. e.printStackTrace();
53. new AlertDialog.Builder(this).setMessage(e.getMessage()).create()
54. .show();
55. }
56. }
里面的IP地址:10.0.2.2,代表着手机模拟器本地的地址,相当于localhost,但不能使用localhost,或者127.0.0.1,因不是在PC机上测试,而是在手机AVD上测试之。
而UserBean.java,它就是一个JAVABEAN,代码如下所示:
1. package po;
2. public class UserBean {
3. private String username;
4. private String password;
5. private int state;
6. public String getUsername() {
7. return username;
8. }
9. public void setUsername(String username) {
10. this.username = username;
11. }
12. public String getPassword() {
13. return password;
14. }
15. public void setPassword(String password) {
16. this.password = password;
17. }
18. public int getState() {
19. return state;
20. }
21. public void setState(int state) {
22. this.state = state;
23. }
24. }
注恴必须AndroidManifest.xml中加入如下代码,不然Android就不能访问web资源。
1. <uses-permission Android:name="android.permission.INTERNET" />
发表评论
-
读写文本
2011-08-23 13:38 1581ldap http://www.360doc.com/cont ... -
短信数据库
2011-07-11 17:09 1172转自http://www.opda.com.cn/thread ... -
tabhost
2011-06-30 21:14 1035for (int i =0; i < tabWid ... -
增加主件
2011-06-22 17:56 971转自:http://ziyu-1.iteye.com/blog ... -
ProgressDialog
2011-06-21 18:08 1065写一个handler myHandler = new Han ... -
android intent调用
2011-06-12 13:09 1494转自:http://blog.csdn.net/y ... -
创建sdcard
2011-06-07 09:56 1269最近在做一个下载附件的小项目需要用到sdcard,在看了几位大 ... -
重写对话框dialog
2011-06-02 16:25 2837转自:http://wang-peng1.iteye.com/ ... -
listview问题
2011-06-01 14:06 1175http://www.cnblogs.com/helong/a ... -
urlconnection和httpclient
2011-05-23 17:16 4897urlconnection: String urlAddres ... -
转载android网络编程
2011-05-11 15:08 1292转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明 ... -
android基础之Application
2011-05-09 09:32 2026远程Web服务器记录android客户端的登陆状态: 在And ... -
android基础
2011-02-24 15:40 1225View重绘和内存泄露的好像是面试经常问的问题 去点editt ... -
android 地图
2010-12-01 10:59 1226http://vip.du8.com/books/sepc0x ... -
android常见问题
2010-11-29 17:52 1190转自:http://eclc.sysu.edu.c ... -
android翻译
2010-11-19 13:01 1114通过网上一位仁兄的实例我 最近练习了一个在线翻译的项目下面把主 ... -
android 应用
2010-11-17 09:32 1358最近做了一个简单的天气预报,话不多说上代码 实时天气的hand ... -
播放器之seekBar
2010-11-03 16:11 15451.在播放器上加入滚动条的代码如下,把goOn()放到on ... -
android sqlite
2010-09-26 16:54 4759今天做项目的时候为了测试我把模拟器里的项目删除了,然后重新运行 ... -
android开发
2010-09-20 13:31 1523原地址http://www.dnbcw.com/bianche ...
相关推荐
1. Android网络编程概述 Android网络编程是指在Android平台上开发能够处理网络请求的应用程序的编程实践。这通常涉及实现客户端与服务器之间的数据交换,使用不同的网络协议如HTTP/HTTPS以及进行网络状态监控等。 2...
### Android网络编程——聊天室开发 #### 一、概述 Android聊天室项目是基于Socket网络编程的一个典型应用案例。通过本项目的开发,开发者可以深入了解如何利用Android设备与服务器端进行通信,实现多人在线聊天的...
本节将深入探讨Android网络编程的基础知识,主要围绕Java网络编程这一核心概念展开。 首先,理解Android网络编程的基础概念至关重要。在Android中,网络操作通常在后台线程中执行,以避免阻塞主线程导致应用无响应...
本教程将引导初学者进入Android网络编程的世界,专注于图片下载这一实际应用。我们将使用Tomcat服务器来存储和提供图片,然后在Android客户端进行下载操作。 首先,理解Android的网络访问规则是至关重要的。Android...
这个“Android网络编程Demo”旨在提供一个基础的示例,帮助开发者理解和实践如何在Android应用中实现网络通信。以下是相关知识点的详细说明: 1. **Android网络权限**: 在AndroidManifest.xml文件中,需要声明`...
Android 网络编程面试题知识点总结 Android 网络编程面试题是 Android 开发者需要掌握的重要知识点。下面总结了 Android 网络编程面试题的知识点。 一、内存优化 * 内存泄漏的定义:程序在申请内存后无法释放本...
总的来说,"Android网络编程之客户端服务器端的交互之上传下载解压文件"是一个涵盖广泛的技术领域,包括HTTP通信、文件操作、权限管理、服务器端开发等多个方面。熟练掌握这些技能,开发者可以构建出功能丰富的...
### Android网络编程基础知识点 #### 一、网络状态检测 在Android开发中,为了确保应用程序能够根据当前网络环境做出响应,通常需要先检测设备的网络连接状态。这可以通过`ConnectivityManager`类来实现。 1. **...
Android网络编程是移动应用开发中的一个重要组成部分,而Http通信则是网络编程中最常用的协议之一。在Android平台上,我们通常会使用HttpURLConnection或者第三方库如Apache HttpClient和OkHttp等进行Http通信。 1....
这是关于安卓网络开发的一些源代码,是相关博客文章讲到的
### Android网络编程:核心网络应用技术 在移动互联网时代,Android设备已经成为人们生活中不可或缺的一部分,而网络编程则是实现Android应用程序与互联网交互的关键技术之一。本文将深入探讨Android网络编程的相关...
"Android网络编程之通讯源代码"着重于展示如何在Android应用中实现实时的数据交换,这对于构建功能丰富的应用如社交媒体、在线购物、实时聊天等至关重要。本篇文章将深入探讨相关知识点,帮助你理解并掌握Android...
以下是一些关于"Android网络编程"的关键知识点: 1. **网络请求库**: Android SDK自带的HttpURLConnection是基础的网络请求方式,但实际开发中更多的是使用第三方库,如OkHttp、Retrofit等。OkHttp以其高效的连接...
1. **Android网络编程基础** - Android系统对网络的支持:讲解Android系统如何内建对HTTP、TCP/IP等网络协议的支持,以及如何在Android应用中使用这些功能。 - 网络权限管理:介绍AndroidManifest.xml文件中关于...
在Android平台上进行网络编程是开发应用不可或缺的一部分,无论是获取服务器数据、实时通信还是文件传输,都需要用到网络技术...通过不断实践和学习,你可以更好地掌握Android网络编程,为你的应用提供强大的网络功能。
Android网路编程代码 设计客户端和服务器端通信 适合初学者学习 当然其中包括很多其他知识点 例如基于handler的主副线程通信机制 多线程应用等 另外 对于Android入门的学习者 也是一手极好的学习资料 下载即可运行 ...