Android从服务器端获取数据的几种方法

作者:小菜 更新时间:2025-03-16 点击数:
简介:在android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳

【菜科解读】

在android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳起来有

一:基于Http协议获取数据方法。

二:基于SAOP协议获取数据方法,三:忘了-------

那么我们的这篇文章主要是将关于使用Http协议获取服务器端数据,这里我们采取的服务器端技术为java,框架为Struts2,或者可以有Servlet,又或者可直接从JSP页面中获取数据。

那么,接下来我们便开始这一路程:

首先:编写服务器端方法,我这里采用的MVC框架是Struts2,目的很单纯,就是为了以后做个完整的商业项目,技术配备为:android+SSH。

当然,篇幅有限,我这里就直接用Strtus2而已。

服务器端:新建WebProject ,选择Java ee 5.0.

为了给项目添加Struts2的支持,我们必须导入Struts2的一些类库,如下即可(有些jar包是不必的,但是我们后来扩展可能是要使用到的,就先弄进去):

1: xwork-core-2.2.1.1.jar

2: struts2-core-2.2.1.1.jar

3: commons-logging-1.0.4.jar

4: freemarker-2.3.16.jar

5: ognl-3.0.jar

6: javassist-3.7.ga.jar

7:commons-ileupload.jar

8:commons-io.jar

9:json-lib-2.1-jdk15.jar 处理JSON格式数据要使用到

10:struts2-json-plugin-2.2.1.1.jar 基于struts2的json插件

以上的jar包,需要放在WebRoot/WEB-INF/lib目录下

然后在web.xml文件中敲下:

View Code

?xml version="1.0" encoding="UTF-8"?>struts2org.apache.struts2.dispatcher.FilterDispatcherstruts2/*index.jsp

然后编写struts.xml文件,并放在WebRoot/WEB-INF/lib目录下:如下代码:

View Code

?xml version="1.0" encoding="UTF-8"?>"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">

配置好后,我们再根据标签内容来编写action。

方法为method对应的login,类名为loginAction,

注意:包继承为:json-default ,输出结果类型为json

如下:

View Code

public class loginAction extends ActionSupport implements ServletRequestAware,ServletResponseAware {/*** */private static final long serialVersionUID = 1L;HttpServletRequest request;HttpServletResponse response;public void setServletRequest(HttpServletRequest request) {this.request=request;}public void setServletResponse(HttpServletResponse response) {this.response=response;}public void login(){ try {//HttpServletRequest request =ServletActionContext.getRequest();// HttpServletResponse response=ServletActionContext.getResponse();this.response.setContentType("text/html;charset=utf-8");this.response.setCharacterEncoding("UTF-8");if(this.request.getParameter("username").equals("123456")){this.response.getWriter().write("真的很奇怪,日本人!");}else if(this.request.getParameter("username").equals("zhd")){this.response.getWriter().write("没有错,我就是东子哥!");}else{this.response.getWriter().write("我就是东子哥!");}//将要返回的实体对象进行json处理 // JSONObject json=JSONObject.fromObject(this.getUsername()); //输出格式如:{"id":1, "username":"zhangsan", "pwd":"123"} // System.out.println(json); // this.response.getWriter().write(json.toString());/**JSONObject json=new JSONObject(); json.put("login", "login");response.setContentType("text/html;charset=utf-8");System.out.println(json);byte[] jsonBytes = json.toString().getBytes("utf-8");response.setContentLength(jsonBytes.length);response.getOutputStream().write(jsonBytes);**//**JSONObject json=new JSONObject(); json.put("login", "login");byte[] jsonBytes = json.toString().getBytes("utf-8");response.setContentType("text/html;charset=utf-8");response.setContentLength(jsonBytes.length);response.getOutputStream().write(jsonBytes);response.getOutputStream().flush();response.getOutputStream().close(); **/ } catch (Exception e) { e.printStackTrace();}// return null;}}

运行查看下:http://localhost:8080/PDAServer/login.action?username=123456 当然你可以输入其他参数的URL

运行成功。

客户端:

这里需要注意的是模拟器把自己当成了localhost,以及127.0.0.1了,因此如果基于本地的web项目测试的话,必须修改IP为:10.0.2.2

public class MainActivity extends Activity {/** Called when the activity is first created. *///模拟器自己把自己当成localhost了,服务器应该为10.0.2.2private static String url="http://10.0.2.2:8080/PDAServer/login.action";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);getPDAServerData(url); }/*** 请求服务* @param url*/private void getPDAServerData(String url){url+="?username=123456";HttpClient client=new DefaultHttpClient();HttpPost request; try {request = new HttpPost(new URI(url));HttpResponse response=client.execute(request);//判断请求是否成功if(response.getStatusLine().getStatusCode()==200){HttpEntity entity=response.getEntity();if(entity!=null){String out=EntityUtils.toString(entity);new AlertDialog.Builder(this).setMessage(out).create().show();}}}catch (URISyntaxException e) {e.printStackTrace();}catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} }

运行结果如下:

成功了吧:当然读者可以根据这个思路扩展下应用,比如:struts2+hibernate+spring+json。

数据方面可以用json,也可以使用xml。

android已经提供了JSON的API,struts2中也可以使用JSON插件.自己扩展吧。

Android,从,服务器,端,获取,数据,的,几种,方法, 上一篇:浏览器经典动画和新动画函数requestAnimationFrame 下一篇:

养狗最佳时机:狗狗从这个月开始养最好,生病几率最低

现在生活中饲养狗狗的人越来越多了,相信大家在养狗之前都想知道,狗狗应该从那几个月开始养比较好吧,今天小编就来和大家说说,狗狗应该从那几个月开始养比较合适吧!如果你想要养一只狗狗的话,那么在购买狗狗的时候,一定要挑选那些3~6个月的狗狗,因为1~2个月的狗狗很容易生病。

所以最好是先让它们过了3个月之后在购买,以免出现问题!还有在冬季的时候尽量不要买狗狗,因为这个季节是犬瘟热和细小病毒的高发期,如果在这个季节购买幼犬一旦感染犬瘟和细小救治起来很困难。

所以购买狗狗讲究也是很多的,宠主一定要谨记,以免让它变成星期狗!刚买回家的小狗,可能会很臭,但是主人不要回家后马上就给它洗澡,脏点没事得让它先适 应环境和温度。

如果太臭的话,主人可以用湿毛巾帮它擦擦,这样就能减少臭味了!还有小狗抱回家后观察最少一个星期,体温、吃喝、大小便,都正常就去打疫苗,一般买狗时卖家都会告诉你狗狗已经打完疫苗了。

除非是有百分之百可信度,要不是最好再去打一遍!还有小奶狗刚到家会因为害怕而一直叫,这时候主人千万不要以为它是饿了,要是你一直给它吃东西,它会撑死 的。

因为小奶狗没有自控意识,就是你给多少它就会吃多少,所以不要以为它叫就是在喊饿!结语:你家狗狗几个月接回家的呢?声明:本文内容仅代表作者个人观点,与本站立场无关。

丧尸和僵尸哪个厉害,僵尸在对抗中会完胜从6方面详细分析

在西方文化中,丧尸是令人胆寒的恐怖怪物,被它咬伤的人很快会因为感染病毒而变为丧尸,而且其没有意志和疼痛感,所以人类的攻击大部分是无效的。

在中国民间传说中,僵尸也是不怕疼痛没有知觉,被它抓伤也会感染,可以说丧尸和僵尸的区别是非常微小的,那么丧尸和僵尸哪个厉害呢?民间大神给出了最合理的分析。

丧尸和僵尸哪个厉害在痛觉方面,丧尸和僵尸是持平的。

丧尸对于普通的攻击是没有感觉的,即使它的肢体被斩断,如果脑袋没事就不会有多大影响,目标依然不会改变。

僵尸同样也是没有痛觉的,普通的小伤对于它来说完全没有阻碍,所以这方面两者平手。

2、弱点僵尸虽然身体比较僵硬,往往只能跳着走,但是僵尸的速度却并不比丧尸慢,因为它的跳跃速度可以很快,而且一些高级的僵尸还可以飞行,它比人类的跳跃速度和距离要夸张得多,而丧尸的速度与人类是很接近的,所以在速度上丧尸并不占优势。

4、感知丧尸在攻击目标后,会让目标感染病毒,这种病毒对于僵尸来说是完全没用的,但僵尸感染的方式是尸毒,它攻击目标不需要用咬,被抓伤或者与身体接触都可以感染目标,如果两者相互攻击丧尸和僵尸哪个厉害?答案自然是僵尸,因为丧尸的病毒对僵尸无效,而僵尸的尸毒对丧尸可能是致命的。

6、数量

加入收藏
               

Android从服务器端获取数据的几种方法

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录