第二篇了.

本篇要讲的是数据获取.

为什么将数据获取放在第二篇就讲呢?

因为我在看别人教程的时候都是先讲控件的属性,然后怎么用控件开始.

可是毕竟咱们也是有一定开发经验的人..所以很自然就想先知道怎么从网络上获取数据(毕竟现在开发的软件一般都是需要联网来运行的) 所以如果能在一开始就知道 数据连接到底 怎么实现,到底麻烦不麻烦.那么最起码心里有个底,

换言之,我也可以安心的把软件做的好点到时候将数据的那部分模块换成从网络上获取就好了.

好了废话不多说了直接进入正题.(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开发---菜鸟学习之路--(二)-数据获取的更多相关文章

  1. IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路

    在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...

  2. IOS开发---菜鸟学习之路--(二十三)-直接利用键值对的方式来处理数据的感想

    首先声明,本文纯粹只是做为本人个人新手的理解.文中的想法我知道肯定有很多地方是错的. 但是这就是我作为一个新人的使用方法,对于大牛非常欢迎指导,对于喷子请绕道而行. 由于这是早上跟我学长讨论数据处理时 ...

  3. IOS开发---菜鸟学习之路--(一)

    PS(废话): 看了那么多的博客文章,发现大部分人都一直在强调写技术博客的重要性,索性自己也耐着性子写写看吧. 写博客的重要性之类的说明,我就不做复制黏贴的工作了.因为自己没有写过多少,所也不清楚是不 ...

  4. IOS开发---菜鸟学习之路--(十七)-利用UITableView实现个人信息界面

    首先来看下我们要实现的效果 需要实现这样的效果 然后我们开始动手吧. 首先选择添加一个新的ViewController 然后打开XIB文件,添加一UITableView 并将样式设置为分组 同时将按住 ...

  5. IOS开发---菜鸟学习之路--(二十)-二维码扫描功能的实现

    本章将讲解如何实现二维码扫描的功能 首先在github上下载ZBar SDK地址https://github.com/bmorton/ZBarSDK 然后将如下的相关类库添加进去 AVFoundati ...

  6. IOS开发---菜鸟学习之路--(十二)-利用ASIHTTPRequest进行异步获取数据

    想要实现异步获取的话我这边了解过来有两个非常简单的方式 一个是利用ASIHTTPRequest来实现异步获取数据 另一个则是利用MBProgressHUD来实现异步获取数据 本章就先来讲解如何利用AS ...

  7. IOS开发---菜鸟学习之路--(二十四)-iOS7View被导航栏遮挡问题的解决

    (此文为复制帖,原文地址为:http://blog.sina.com.cn/s/blog_a8192bdd0101af40.html) self.navigationController.naviga ...

  8. IOS开发---菜鸟学习之路--(二十一)-利用正则表达式解析URL获取其中的参数

    因为项目需要解析URL当中参数的部分,在网上搜索了一下都没有相关的资料. 然后就自己写了一个 其实我就是通过正则表达式来处理URL 进行解析的 好了直接上代码吧 也是非常的简单,大家拷贝过去就可以使用 ...

  9. IOS开发---菜鸟学习之路--(五)-MacBook购买前后感想

    前几天刚入手了一台MACBOOK AIR 13寸 13版的 这几天使用过来个人感觉还是非常不错的. 这几天每天晚上都抱着她玩到十一.二点. 今天晚上突然想起来好久没续写博客了.就连忙开始码字了. 此章 ...

随机推荐

  1. php 02

    变量的数据类型 一.类型 标量类型: 布尔型 整型 浮点型 字符串 复合类型:  数组  对象 特殊类型:  资源 null 1. 布尔型 true  false 以下值认为是false  其他值都认 ...

  2. java 创建一个新的http 请求的一种实现方式

    项目中遇到要在后台向集群中的其他一台服务器发送一个请求,参考了网上一些材料,最终完成了需求.代码如下 /** * @Title requestURLWithPost * @Description:发送 ...

  3. Linux下安装maven和nexus

    Linux下安装maven1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令: 2.进入下载 ...

  4. docker使用alpine系统构建tomcat镜像

    FROM frolvlad/alpine-oraclejdk8 #此镜像使用alpine-glibc系统,精简jdk,只运行java程序,无法编译/构建 MAINTAINER huqiang:2018 ...

  5. CSS第二节

    div做页面布局的建议 把整个网页从上到下分成若干块(一般分三块:头,中间,尾部),每一块都按下面的思路 先写第一层,可以设置背景色,或者高度和垂直居中(line-height保证内容不超出高度),不 ...

  6. Python常见编程规范总结

    Pythonic定义 Python最常用的编码风格还是PEP8,详见:http://jython.cn/dev/peps/pep-0008/ Pythonic确实很难定义,先简单引用下<Pyth ...

  7. World Wind Java开发之十三——加载Geoserver发布的WMS服务(转)

    这篇是转载的平常心博客,原地址见:http://www.v5cn.cn/?p=171 1.WMSTiledImageLayer类说明 一个WMSTiledImageLayer类对象只能对应一个WMS发 ...

  8. 【BZOJ1030】[JSOI2007] 文本生成器(AC自动机上跑DP)

    点此看题面 大致题意: 给你\(N\)个字符串(只含大写字母),要你求出有多少个由\(M\)个大写字母构成的字符串含有这\(N\)个字符串中的至少一个. \(AC\)自动机 看到题目,应该比较容易想到 ...

  9. Java环境变量搭建(Linux环境)

    1. 下载解压JDK压缩包 例如:解压到 /opt/jdk1.7.0_80 下 2. 添加环境变量到 /etc/profile 文件中 vi /etc/profile 在文件末尾追加如下内容: exp ...

  10. red hat的防火墙怎么关闭

    查看是否开启: service iptables status 关闭方法: service iptables stop 永远关闭: Ntsysv 把iptables前的*号去掉. 查看SELinux状 ...