.Net程序员安卓学习之路4:使用xutils Get Post数据
前面使用了一些网络上找来的类进行网络访问,后来发现了安卓开发中有一个国人写的类库xutils比较全面,也比较经典,故后续使用xutils类库进行记录。
本例服务端使用WCF来实现,写好的WCF服务端在:http://www.cnblogs.com/madyina/p/3454741.html 下载部署即可
该服务说明如下:
这4个公开方法均返回一个User对象,其中最后一个还接收一个User对象。
下面我们就分别请求这4个资源。
第一步:实现界面
使用相对布局,放置2个按钮,分别为【Get Test】和【Post Test】。
布局代码如:
<Button
android:id="@+id/btn_get"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get Test"
android:onClick="btn_getTest"
/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/btn_get"
android:text="Post Test"
android:onClick="btn_postTest"
/>
第二步:引入第三方Jar包:
分别在下面地址下载xutils包和FastJson包:
https://github.com/wyouflf/xUtils/blob/master/xUtils-2.6.14.jar
http://repo1.maven.org/maven2/com/alibaba/fastjson/
复制到eclipse中。
不过这个FastJson包真心有点太大了,希望能够精简一些。
然后加入网络访问权限:
<uses-permission android:name="android.permission.INTERNET"/>
在bin\AndroidManifest.xml中
第三步:实现网络GET方式访问
服务中第一个方法如:
[OperationContract]
[WebInvoke(UriTemplate = "GetPerson", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "GET")]
public User GetUser()
{
return new User { Age = "", ID = "", Name = "zhangsan" };
}
所以使用
http://192.168.1.6/UserService.svc/GetPerson 来进行访问,如果访问成功,服务会返回一个Json串
我们要做的就是将返回的Json串反序列化成对象,再访问对象的属性。
Xutils为我们封装并优化了Android网络访问,所以现在写访问代码较为轻松:
public void btn_getTest(View v)
{
HttpUtils http = new HttpUtils();
String url = "http://192.168.1.6/UserService.svc/GetPerson";
RequestParams params = new RequestParams();
http.send(HttpMethod.GET, url, params, new RequestCallBack<String>() { @Override
public void onSuccess(ResponseInfo<String> responseInfo) {
User userInfo=JSON.parseObject(responseInfo.result,User.class);
Toast.makeText(getApplicationContext(), "请求结果:" + userInfo.getName(), Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(HttpException error, String msg) {
Toast.makeText(getApplicationContext(), "访问失败" + msg, Toast.LENGTH_SHORT).show();
} });
}
发送到虚拟机运行效果如:
Get方式若要加参数只需加在Url中即可,所以第二个方法不再举例。
第四步:实现网络POST方式访问
POST方式无参情况较少,我们直接来看有BODY的情况。实现思路是将本地对象序列化成JSON串,POST给服务,将返回的数据再次反序列化,如上例show出对象的属性。
服务方法如:
[OperationContract]
[WebInvoke(UriTemplate = "GetPersonPostById", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST")]
public User GetUserPostById(User u)
{
return new User { Age = "", ID = "", Name = "laoliu" };
}
本次不同的是由于传送的BODY格式是JSON格式,所以需要在POST请求中加入Content-Type,详细代码如下:
public void btn_postTest(View v)
{
HttpUtils http = new HttpUtils();
String url = "http://192.168.1.6/UserService.svc/GetPersonPostById";
RequestParams params = new RequestParams();
/* //添加请求参数
params.addBodyParameter(key, value);*/ params.addHeader("Content-Type", "application/json"); User user=new User();
user.setName("mady");
user.setAge("1");
user.setID("123"); String jsonStr=JSON.toJSONString(user);
try {
params.setBodyEntity(new StringEntity(jsonStr)); } catch (UnsupportedEncodingException e) {
}
http.send(HttpMethod.POST, url, params, new RequestCallBack<String>() { @Override
public void onSuccess(ResponseInfo<String> responseInfo) {
User userInfo=JSON.parseObject(responseInfo.result,User.class);
Toast.makeText(getApplicationContext(), "请求结果:" + userInfo.getName(), Toast.LENGTH_SHORT).show();
} @Override
public void onFailure(HttpException error, String msg) {
Toast.makeText(getApplicationContext(), "访问失败" + error.fillInStackTrace(), Toast.LENGTH_SHORT).show();
} });
}
发送到虚拟机运行效果如:
如此我们就完成了使用xutils简化网络访问。
.Net程序员安卓学习之路4:使用xutils Get Post数据的更多相关文章
- .Net程序员安卓学习之路1:登陆界面
任何编程学习起步均是HelloWorld,作为稍有>net编程经验的我们来说就跳过这步吧,咱们且从简单登录界面开始.先看看效果: 一.准备知识: 1. 安卓环境:安装好JDK,直接去官网下载AD ...
- .Net程序员安卓学习之路6:等待条
一般在需要访问网络或者长时间操作的时候避免界面无响应才使用:等待条 本例将实现一个无框架的等待条,效果如下: 点击后,使线程Sleep5秒,就出现如下效果: 实现代码如: private Progre ...
- .Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示
xUtils注入和图片显示 一.xUtils注入 引用官方介绍: ViewUtils模块: •android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定: •新的事件绑定方式,使用混淆工 ...
- .Net程序员安卓学习之路3:Post数据给网络API
本例我们实现一次真正的网络交互,将数据POST到API,然后接收服务器的返回值进行处理,同时引入自定义类型和传说中阿里的FastJson. 实现思路如: 1. 在API端接收客户POST的数据还原成对 ...
- .Net程序员安卓学习之路2:访问网络API
做应用型的APP肯定是要和网络交互的,那么本节就来实战一把Android访问网络API,还是使用上节的DEMO: 一.准备API: 一般都采用Json作为数据交换格式,目前各种语言均能输出Json串. ...
- zz 游戏程序员的学习之路(中文版)
游戏程序员的学习之路(中文版) Milo Yip · 1 天前 感谢 @楚天阔(tkchu)编写脚本及整理中文译本数据,自动从英文版生成中文版,SVG / PDF 版本中的书籍图片现在链接至豆瓣页面. ...
- GJM : 游戏程序员的学习之路
原文作者:miloyip 原帖地址:http://gad.qq.com/article/detail/7180681 原帖备注:版权所有,禁止匿名转载:禁止商业使用:禁止个人使用. 腾讯前端技术总监 ...
- 五年.net程序员Java学习之路
大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#.恰逢公司也在扩张,招聘了不少.net程序员,笔者作为应届生,也乐呵呵的加入到.net程序员行列中. ...
- 2017PHP程序员的进阶之路
2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...
随机推荐
- hdu杭电1671 / poj3630 字典树
传送门 题意:输入n串数字 找出是否有存在串的前缀与另一个串相同 如果存在 输出NO否则输出YES 思路:用字典树解决 标记字典树总串的结尾 查找出一个串内部是否有被标记的节点 如果有那么说明存在前缀 ...
- ZK 使用Clients.response
参考: http://stackoverflow.com/questions/11416386/how-to-access-au-response-sent-from-server-side-at-c ...
- iOS Core Animation
1.什么是Core Animation? 它是一套包含图形绘制,投影,动画的OC类集合.它就是一个framework.通过CoreAnimation提供的接口,你可以方便完成自己所想要的动画. 2.我 ...
- JavaScript 几种简单的table切换
方法一:for循环+if判断当前点击与自定义数组是否匹配 <!DOCTYPE html> <html lang="en"> <head> < ...
- Ajax提交后台中文乱码问题
今天项目组同事反映,之前有一个正常的请求,今天突然后台获取参数的值出现了中文乱码,怀疑是之前更新jar包所致,笔者仔细想了想更新的内容,仿佛没有涉及到编码的变更啊,然后开始排查,首先后台加了强制以ut ...
- python操作Excel读写--使用xlrd和xlwt
一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 进入到解压文件路径,输入 setup.py ...
- BizTalk开发系列(十六) XML命名空间
BizTalk开发过程中如果有对XML进行开发操作,比如在自定义代码里操作XML消息或者在Mapping的时候使用Xpath对XML进行操 作.则有机会遇到XML命名空间的问题.常见的是使用Xpath ...
- mybatis底层源码分析之--配置文件读取和解析
现在企业级开发中ssm是很常见的技术标配,mybatis比hibernate轻量了很多,而且学习成本相对较低,简单易上手. 那么,问题来了,简单好用的mybatis底层到底是如何实现的呢?都使用了什么 ...
- OAuth2.0 微博登陆网站功能的实现(一)获取用户授权及令牌 Access Token
在登陆一些网站的时候,可以选择登陆方式为第三方登陆,例如微博登陆,以爱奇艺为例,进入首页,点击 ”登陆“,会弹出登录框: 除了本站登陆外,还可以选择其他第三方登陆,比如微博登陆.QQ 登陆.微信登陆等 ...
- Dynamic Percentage of Operands
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION