第二篇了.
本篇要讲的是数据获取.
为什么将数据获取放在第二篇就讲呢?
因为我在看别人教程的时候都是先讲控件的属性,然后怎么用控件开始.
可是毕竟咱们也是有一定开发经验的人..所以很自然就想先知道怎么从网络上获取数据(毕竟现在开发的软件一般都是需要联网来运行的) 所以如果能在一开始就知道 数据连接到底 怎么实现,到底麻烦不麻烦.那么最起码心里有个底,
换言之,我也可以安心的把软件做的好点到时候将数据的那部分模块换成从网络上获取就好了.
好了废话不多说了直接进入正题.(PS:我这边只是把我实现数据获取的方式讲一下,因为我自己也不是很深入的研究,所以数据获取的模块被我弄的非常简单....还是那句话希望不要误人子弟.)
正文:
数据获取的话 我这边使用的数据格式是JSON格式的数据 (不知道JSON的请自行百度)
在一开始实现的时候我是先写个c# 的webservice服务的,然后发现通过我这个方法调用过来之后返回的数据是
XML格式的..这样的话,为了获得里面的数据我还需要再解析XML一遍.非常的麻烦(苦逼的程序员就是怕麻烦的人物啊...)
然后我这边就分析了下数据获取的实现原理...然后就将服务提供换成了 C# 网页中的 一般处理程序 也就是.ashx文件
至于.ashx文件怎么写 请在本文备注部分查看
http://XXXXX.XXXX.XXX/WebServicesForIOS/IOSWebservices.ashx ? 参数....
这个是我们.ashx的地址
{"Result":"True","Data":{"ID":196,"用户名":"dl","密码":"dl","姓名":"dl","角色":"dl","是否是管理员":"True"}}
这个是返回的数据
接下来就直接开始讲OC部分的实现吧
首先大家需要新建一个类.然后继承至NSObject类 就好了
命名的话我是叫 "GetWebInfo"
完成后XCODE会创建两个文件 分别是GetWebInfo.h与GetWebInfo.m
首先打开 .h文件
改成这样
#import <Foundation/Foundation.h> #define WEBADDRESS @"http://XXXXX.XXX.XXX/WebServicesForIOS/IOSWebservices.ashx" @interface GetWebInfo : NSObject{ NSString *parameters; } @property(nonatomic,retain) NSString *parameters; -(NSString *)dogetWebInfo; @end
我这边定义了一个全局的 定量
WEBADDRESS
一个string类型的变量
parameters
一个返回string 的方法
-(NSString *)dogetWebInfo;
接下来我来分别讲下这三个的作用
首先是定量 WEBADDRESS 该定量的作用就是配置地址.这样的话 如果我需要访问不同的地址的时候只要修改一下该文件就可以了.至于为什么要这么做呢?相信大家应该都是有很多测试地址和正式地址的..到时候只要修改一下前面的网页链接就可以轻松搞定测试与正式的切换了
然后是parameters 就是参数了 .这边的参数的话我是用很土的办法 由大家自己拼接string然后传递
大致的格式就是 Method=方法名&参数1名=参数1&参数2名=参数2 这样的拼接
这样的话 我调用不同的方法 只需要传递 对应的方法名以及所需要的参数就可以了 然后他就会通过 dogetWebInfo来获取数据了.
然后是-(NSString *)dogetWebInfo;
其实讲了这么多 核心的就是dogetWebInfo方法了 请直接看.m文件
#import "GetWebInfo.h" @implementation GetWebInfo @synthesize parameters; -(NSString *)dogetWebInfo{ NSURL *url = [NSURL URLWithString:WEBADDRESS]; NSData *queram=[parameters dataUsingEncoding:NSUTF8StringEncoding]; NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url]; [urlRequest setHTTPMethod:@"POST"]; [urlRequest setHTTPBody:queram]; NSData* result = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil]; NSString *string=[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding]; return string; } @end
我来细节的解释下获取数据的实现
我们这边需要用的是 NSURL类 首先是定义Nsurl的地址
然后queram 呢就是我们的参数拉
urlRequest 就是返回类了
然后是定义 他是Post传输还是get传输再然后setHTTPBody的作用呢就是 设置参数.
result 呢就是返回的结果 这边返回的结果呢是NSData类型的
所以最后呢 需要讲result转化为string类型..就可以获得我们的数据了.
之后呢我们就可以对获取过来是json格式的数据进行操作了
当然这边他目前还是nsstring 格式的 我们还需要转换成可以使用的格式..但是简单来讲我们已经完成了数据获取的全部内容了
是不是非常简单呢?嘿嘿就是这么简单!
PS:这边返回的数据 呢是 在网页中打开是什么 获取 获取的就是什么.
大家都知道 如果我们直接在网页中访问webservice的时候他是包含xml 的内容的 实际的内容他会放在<string></string>节点当中
也就是这样分析.所以我才改用.ashx的方法
备注部分:
这部分呢主要是讲下.ASHX的简单实现
新建完.ashx 文件的话 他回有个默认的方法
然后里面呢会有以个context 变量
我们就可以直接使用这个变量了
context.Request["变量名"] 这样呢就是获取变量
context.Response.Write("数据");//格式我是用string格式的这样呢就是返回数据了
也很简单.大家可以赶紧去试试吧.
全文就这么多内容了请期待下一篇..下一篇应该会讲解下 如何处理获取过来的nsstring格式的json数据