android端和Struts2服务器端通信,交互信息,参数采用JSON,使用了HttpClient与HttpPost类
来源:互联网 发布:冰种翡翠手镯价格知乎 编辑:程序博客网 时间:2024/04/29 19:52
首先是Struts端的程序,采用Struts2.1.6
1:web.xml的配置,主要是配置Struts2的filter
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2:struts.xml的内容:
- <package name="testjson" extends="json-default">
- <action name="getjson" class="com.capinfotech.json.JSONAction" method="json">
- <result type="json" />
- </action>
- </package>
<package name="testjson" extends="json-default"> <action name="getjson" class="com.capinfotech.json.JSONAction" method="json"> <result type="json" /> </action> </package>
3:JSONAciton的内容为:
- package com.capinfotech.json;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONObject;
- import org.apache.struts2.interceptor.ServletRequestAware;
- import org.apache.struts2.interceptor.ServletResponseAware;
- import com.opensymphony.xwork2.ActionSupport;
- public class JSONAction extends ActionSupport implements ServletRequestAware, ServletResponseAware{
- private static final long serialVersionUID = -989477296829078690L;
- private HttpServletRequest request;
- private HttpServletResponse response;
- private String format;
- public String getFormat() {
- return format;
- }
- public void setFormat(String format) {
- this.format = format;
- }
- public void setServletRequest(HttpServletRequest request) {
- this.request = request;
- }
- public void setServletResponse(HttpServletResponse response) {
- this.response = response;
- }
- public void json() {
- JSONArray jsonArray = new JSONArray();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("id", 1);
- jsonObject.put("title", "哈利波特");
- jsonObject.put("timelength", 89);
- JSONObject jsonObject1 = new JSONObject();
- jsonObject1.put("id", 2);
- jsonObject1.put("title", "速度与激情");
- jsonObject1.put("timelength", 120);
- JSONObject jsonObject2 = new JSONObject();
- jsonObject2.put("id", 3);
- jsonObject2.put("title", "变形金刚3");
- jsonObject2.put("timelength", 100);
- jsonArray.add(0, jsonObject);
- jsonArray.add(1, jsonObject1);
- jsonArray.add(2, jsonObject2);
- try {
- this.response.setCharacterEncoding("UTF-8");
- this.response.getWriter().write(jsonArray.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
package com.capinfotech.json;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import com.opensymphony.xwork2.ActionSupport;public class JSONAction extends ActionSupport implements ServletRequestAware, ServletResponseAware{private static final long serialVersionUID = -989477296829078690L;private HttpServletRequest request;private HttpServletResponse response;private String format;public String getFormat() {return format;}public void setFormat(String format) {this.format = format;}public void setServletRequest(HttpServletRequest request) {this.request = request;}public void setServletResponse(HttpServletResponse response) { this.response = response;}public void json() {JSONArray jsonArray = new JSONArray();JSONObject jsonObject = new JSONObject();jsonObject.put("id", 1);jsonObject.put("title", "哈利波特");jsonObject.put("timelength", 89);JSONObject jsonObject1 = new JSONObject();jsonObject1.put("id", 2);jsonObject1.put("title", "速度与激情");jsonObject1.put("timelength", 120);JSONObject jsonObject2 = new JSONObject();jsonObject2.put("id", 3);jsonObject2.put("title", "变形金刚3");jsonObject2.put("timelength", 100);jsonArray.add(0, jsonObject);jsonArray.add(1, jsonObject1);jsonArray.add(2, jsonObject2);try {this.response.setCharacterEncoding("UTF-8");this.response.getWriter().write(jsonArray.toString());} catch (IOException e) {e.printStackTrace();}}}
4:运行效果为如下图:
5:运行注意事项,当Struts2中使用JSON时,一定要添加够JSON使用的包,否则会出错,要添加的包如下:
ezmorph-1.0.6.jar
commons-lang 2.4
commons-beanutils 1.7.0
commons-collections 3.2
commons-logging 1.1.1
Android端的程序和配置
1:androidmanifest.xml的内容为:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="cn.capinfotech.json"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".MainActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-sdk android:minSdkVersion="8" />
- <uses-permission android:name="android.permission.INTERNET" />
- </manifest>
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.capinfotech.json" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET" /></manifest>
2:main.xml的内容主要是定义了ListView用来显示最新的电影咨询
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <ListView
- android:id="@+id/videos"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
- </LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><ListView android:id="@+id/videos" android:layout_width="fill_parent" android:layout_height="fill_parent" /></LinearLayout>
3:item.xml的内容,主要用来定义ListView里每个元素的显示方式
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView
- android:layout_width="250dip"
- android:layout_height="wrap_content"
- android:id="@+id/title"
- />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/timelength"
- />
- </LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"><TextView android:layout_width="250dip" android:layout_height="wrap_content" android:id="@+id/title" /><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/timelength"/></LinearLayout>
4:定义了一个实体类Video
- package com.capinfotech.model;
- public class Video {
- private Integer id;
- private String name;
- private Integer time;
- public Video() {
- }
- public Video(Integer id, String name, Integer time) {
- super();
- this.id = id;
- this.name = name;
- this.time = time;
- }
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Integer getTime() {
- return time;
- }
- public void setTime(Integer time) {
- this.time = time;
- }
- }
package com.capinfotech.model;public class Video {private Integer id;private String name;private Integer time;public Video() {}public Video(Integer id, String name, Integer time) {super();this.id = id;this.name = name;this.time = time;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getTime() {return time;}public void setTime(Integer time) {this.time = time;}}
5:MainActivity的内容
- package cn.capinfotech.json;
- import java.net.URI;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpResponse;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.util.EntityUtils;
- import org.json.JSONArray;
- import org.json.JSONObject;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.widget.ListView;
- import android.widget.SimpleAdapter;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- private static final String TAG = "MainActivity";
- private List<HashMap<String, Object>> videos = null;
- private HashMap<String, Object> video = null;
- private ListView listView = null;
- private static String url = "http://10.0.2.2:8088/Struts2_sxt/getjson.action";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- listView = (ListView)findViewById(R.id.videos);
- getPDAServerData(url);
- }
- private void getPDAServerData(String url) {
- HttpClient client = new DefaultHttpClient();
- //提拱默认的HttpClient实现
- HttpPost request;
- try {
- request = new HttpPost(new URI(url));
- HttpResponse response = client.execute(request);
- // 判断请求是否成功
- if (response.getStatusLine().getStatusCode() == 200) { //200表示请求成功
- HttpEntity entity = response.getEntity();
- if (entity != null) {
- String out = EntityUtils.toString(entity, "UTF-8");
- Log.i(TAG, out);
- JSONArray jsonArray = new JSONArray(out);
- videos = new ArrayList<HashMap<String, Object>>();
- for(int i = 0; i<jsonArray.length(); i++) {
- JSONObject jsonObject = (JSONObject) jsonArray.get(i);
- int id = jsonObject.getInt("id");
- String name = jsonObject.getString("title");
- int timelength = jsonObject.getInt("timelength");
- video = new HashMap<String, Object>();
- video.put("id", id);
- video.put("name", name);
- video.put("timelength", "时长为:" + timelength);
- videos.add(video);
- }
- SimpleAdapter adapter = new SimpleAdapter(this, videos, R.layout.item,
- new String[]{"name", "timelength"},
- new int[]{R.id.title, R.id.timelength}
- );
- listView.setAdapter(adapter);
- }
- }
- } catch(Exception e) {
- e.printStackTrace();
- Log.e(TAG, e.toString());
- Toast.makeText(MainActivity.this, "获取数据失败", Toast.LENGTH_LONG).show();
- }
- }
- }
package cn.capinfotech.json;import java.net.URI;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import org.json.JSONArray;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private List<HashMap<String, Object>> videos = null; private HashMap<String, Object> video = null; private ListView listView = null; private static String url = "http://10.0.2.2:8088/Struts2_sxt/getjson.action"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listView = (ListView)findViewById(R.id.videos); getPDAServerData(url); } private void getPDAServerData(String url) { HttpClient client = new DefaultHttpClient(); //提拱默认的HttpClient实现 HttpPost request; try { request = new HttpPost(new URI(url)); HttpResponse response = client.execute(request); // 判断请求是否成功 if (response.getStatusLine().getStatusCode() == 200) { //200表示请求成功 HttpEntity entity = response.getEntity(); if (entity != null) { String out = EntityUtils.toString(entity, "UTF-8"); Log.i(TAG, out); JSONArray jsonArray = new JSONArray(out); videos = new ArrayList<HashMap<String, Object>>(); for(int i = 0; i<jsonArray.length(); i++) { JSONObject jsonObject = (JSONObject) jsonArray.get(i); int id = jsonObject.getInt("id"); String name = jsonObject.getString("title"); int timelength = jsonObject.getInt("timelength"); video = new HashMap<String, Object>(); video.put("id", id); video.put("name", name); video.put("timelength", "时长为:" + timelength); videos.add(video); } SimpleAdapter adapter = new SimpleAdapter(this, videos, R.layout.item, new String[]{"name", "timelength"}, new int[]{R.id.title, R.id.timelength} ); listView.setAdapter(adapter); } } } catch(Exception e) { e.printStackTrace(); Log.e(TAG, e.toString()); Toast.makeText(MainActivity.this, "获取数据失败", Toast.LENGTH_LONG).show(); } }}
6:程序界面效果图
0 0
- android端和Struts2服务器端通信,交互信息,参数采用JSON,使用了HttpClient与HttpPost类
- android端和Struts2服务器端通信,交互信息,参数采用JSON,使用了HttpClient与HttpPost类
- android端和Struts2服务器端通信,交互信息,参数采用JSON,使用了HttpClient与HttpPost类
- android端和Struts2服务器端通信,交互信息,参数采用JSON,使用了HttpClient与HttpPost类
- 采用JSON交互信息的android端和Struts2服务器端通信,使用了HttpClient与HttpPos
- android端与服务器端的通信交互
- Android手机客户端与服务器端的信息通信交互
- servlet服务器端和android端json交互
- Android HttpClient && HttpPost简单使用
- Android HttpClient && HttpPost简单使用
- Android的与服务器端传送信息使用JSON类-JSONObject与JSONArray的使用
- Android客户端与服务器端(struts2)通信
- android 客户端与服务器端之间采用JSON进行数据通信之一
- 【转】Android HttpClient && HttpPost简单使用
- MFC使用HttpGet和HttpPost方法与服务器通信
- MFC使用HttpGet和HttpPost方法与服务器通信
- MFC使用HttpGet和HttpPost方法与服务器通信
- MFC使用HttpGet和HttpPost方法与服务器通信
- linux kernel的中断子系统之(四):High level irq event handler
- 学习broadcast和service结合练习做了一个小型播放器,本周出正式版
- 可我只有两双布鞋
- Linux kernel中断子系统之(五):驱动申请中断API
- [Leet code 153, medium] Find Minimum in Rotated Sorted Array
- android端和Struts2服务器端通信,交互信息,参数采用JSON,使用了HttpClient与HttpPost类
- Linux kernel的中断子系统之(六):ARM中断处理过程
- HttpClient模拟get,post请求并发送请求参数(json等)
- linux kernel的中断子系统之(七):GIC代码分析
- linux kernel的中断子系统之(八):softirq
- 【基础算法】排序-复杂排序之一(归并排序的两种优化讨论)
- 模拟post提交json
- Linux common clock framework(1)_概述
- Linux common clock framework(2)_clock provider 作者:蜗蜗 发布于