IOS开发---菜鸟学习之路--(二)-数据获取
第二篇了.
本篇要讲的是数据获取.
为什么将数据获取放在第二篇就讲呢?
因为我在看别人教程的时候都是先讲控件的属性,然后怎么用控件开始.
可是毕竟咱们也是有一定开发经验的人..所以很自然就想先知道怎么从网络上获取数据(毕竟现在开发的软件一般都是需要联网来运行的) 所以如果能在一开始就知道 数据连接到底 怎么实现,到底麻烦不麻烦.那么最起码心里有个底,
换言之,我也可以安心的把软件做的好点到时候将数据的那部分模块换成从网络上获取就好了.
好了废话不多说了直接进入正题.(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数据
IOS开发---菜鸟学习之路--(二)-数据获取的更多相关文章
- IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路
在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...
- IOS开发---菜鸟学习之路--(二十三)-直接利用键值对的方式来处理数据的感想
首先声明,本文纯粹只是做为本人个人新手的理解.文中的想法我知道肯定有很多地方是错的. 但是这就是我作为一个新人的使用方法,对于大牛非常欢迎指导,对于喷子请绕道而行. 由于这是早上跟我学长讨论数据处理时 ...
- IOS开发---菜鸟学习之路--(一)
PS(废话): 看了那么多的博客文章,发现大部分人都一直在强调写技术博客的重要性,索性自己也耐着性子写写看吧. 写博客的重要性之类的说明,我就不做复制黏贴的工作了.因为自己没有写过多少,所也不清楚是不 ...
- IOS开发---菜鸟学习之路--(十七)-利用UITableView实现个人信息界面
首先来看下我们要实现的效果 需要实现这样的效果 然后我们开始动手吧. 首先选择添加一个新的ViewController 然后打开XIB文件,添加一UITableView 并将样式设置为分组 同时将按住 ...
- IOS开发---菜鸟学习之路--(二十)-二维码扫描功能的实现
本章将讲解如何实现二维码扫描的功能 首先在github上下载ZBar SDK地址https://github.com/bmorton/ZBarSDK 然后将如下的相关类库添加进去 AVFoundati ...
- IOS开发---菜鸟学习之路--(十二)-利用ASIHTTPRequest进行异步获取数据
想要实现异步获取的话我这边了解过来有两个非常简单的方式 一个是利用ASIHTTPRequest来实现异步获取数据 另一个则是利用MBProgressHUD来实现异步获取数据 本章就先来讲解如何利用AS ...
- IOS开发---菜鸟学习之路--(二十四)-iOS7View被导航栏遮挡问题的解决
(此文为复制帖,原文地址为:http://blog.sina.com.cn/s/blog_a8192bdd0101af40.html) self.navigationController.naviga ...
- IOS开发---菜鸟学习之路--(二十一)-利用正则表达式解析URL获取其中的参数
因为项目需要解析URL当中参数的部分,在网上搜索了一下都没有相关的资料. 然后就自己写了一个 其实我就是通过正则表达式来处理URL 进行解析的 好了直接上代码吧 也是非常的简单,大家拷贝过去就可以使用 ...
- IOS开发---菜鸟学习之路--(五)-MacBook购买前后感想
前几天刚入手了一台MACBOOK AIR 13寸 13版的 这几天使用过来个人感觉还是非常不错的. 这几天每天晚上都抱着她玩到十一.二点. 今天晚上突然想起来好久没续写博客了.就连忙开始码字了. 此章 ...
随机推荐
- 使用Python开发环境Wing IDE设立项目注意事项
使用Wing IDE的第一步是建立一个项目文件,这样Wing IDE就可以找到并分析源代码,存储工作. Wing IDE会自动以默认的项目进行启动.在本教程中用户也可以使用这个默认项目进行示例操作.如 ...
- 【extjs6学习笔记】1.9 初始: Mixins
Mixin允许我们使用一个类的函数作为另一个类的函数而不继承. Mixins可以使用mixins关键字定义,并将值指定为JSON对象,其中属性的名称应该是要使用的方法的名称,属性的值将是定义方法的类的 ...
- uvm_hdl——DPI在UVM中的实现(四)
我们可以在uvm中实现HDL的后门访问,具体包括的function有uvm_hdl_check_path,uvm_hdl_deposit, uvm_hdl_force,uvm_hdl_release, ...
- ArcGIS10.1的安装问题
注:必须用3个带0的文件夹里面的东西安装 1.先装Pre-release_license_manager ,然后停掉. 2.然后安装0Desktop/ArcGIS_Desktop, 3.打开0Ke ...
- jQuery_1_基础核心
jQuery代码风格:在jQuery程序中,不管是页面元素的选择还是内置的功能函数,都是以“$"来起始的. $(function(){}); / ...
- LeetCode Find Peak Element 找临时最大值
Status: AcceptedRuntime: 9 ms 题意:给一个数组,用Vector容器装的,要求找到一个临时最高点,可以假设有num[-1]和num[n]两个元素,都是无穷小,那么当只有一个 ...
- TFS看板的设计
列 产品开发的整个流程如下图,将流程配置到看板的列: 需求池-->就绪-->开发-->测试-->待验收 -->待发布 -->已关闭 一般将Bug和需求放在一块看版上 ...
- C++指针的概念解读
C++指针的概念解读 超详细 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区 ...
- Android(java)学习笔记104:Framework运行环境之启动SystemServer进程
1. SystemServer进程 SystemServer进程是zygote孵化出的第一个进程,该进程是从ZygoteInit.java的main函数中调用startSystemServe ...
- HTML第四章:初始css
CSS样式: 一.为什么要使用CSS;可以让页面更美观.有利于开发速度. 二.什么是CSS:全称cascading style shee ...