移动开发在路上-- IOS移动开发系列 网络交互四(2)

接着上次的讲,这次我们讲 网络请求的封装  打开创建的项目,让我们一起来继续完成他,

首先我们来创建一个NSobject 的文件

圈住出来的轻一点要注意。千万不要搞错了

创建好之后,开始编写代码,

我们第一不要要先把工程文件引用进来

看图

让后我们定义一下接口  和 一个block

//block定义
typedef void(^RequestFinishBlock)(id result);


1 @interface ZWJDataService : NSObject
2
3 //定义接口
4 +(ASIHTTPRequest *)requestWithURL:(NSString *)urlstring
5 params:(NSMutableDictionary *)params
6 httpMethod:(NSString *)httpMethod
7 completeBlock:(RequestFinishBlock)block;
8
9 @end

上图片

打开.m文件

补充说明一下 由于我们这里网络数据是用json格式的所以要解析json还要引用第三方的库,

JSONKit

先导入 JSONkit.h JSONKit.m 两个文件

cocoa 下json开源的类库有很多,其中JSONKit库是非常简单易用而且效率又比较高的。

想要使用JSONKit库来解析json文件,只需要下载JSONKit.h 和JSONKit.m添加到工程中(下载链接);然后加入libz.dylib即可

在扩展一下 讲一下使用方法

1.将json转换为NSDictionary

NSString *string = @"{\"name\": \"My Name\",\"list\": [\"one\",\"two\",\"three\"]}";

NSData* jsonData = [string dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary *resultsDictionary = [jsonData objectFromJSONData];

2.将NSDictionary转换为 json格式的string

//resultsDic是需要转换的Dictionary
NSString *string = [[NSString alloc] initWithData:[resultsDic JSONData] encoding:NSUTF8StringEncoding];

下面继续回归主题

实现.h文件当中定义的接口


+(ASIHTTPRequest *)requestWithURL:(NSString *)urlstring
params:(NSMutableDictionary *)params
httpMethod:(NSString *)httpMethod
completeBlock:(RequestFinishBlock)block{

}

这个方法的参数我不做注释我想大家根据单词的意思也能大概了解到。之前英语没学好,现在边学习编程还要辅助学习English。。。

下边我们还要做一件定义一个宏基地址

意思就是说我们要访问接口肯定要用到url,那么url里边肯定会有主机地址跟接口的主入口是不变的,边的东西需要我们动态的去加载、变更。

#define BASE_URL @"http://**********/api/"

在这里我的测试地址就不做显示了,大家也可以根据自己的不同的需求来定义自己的接口主体

我这里的url是分为

主体部分 + token +
其他参数
组合而成的

其他参数:我们在接口中已经定义过了他是 NSMutableDictionary  类型的
,在C#里边是Dictionary键值对字典

params:(NSMutableDictionary *)params

在这里我们必须得遵守oc中的守则才进行参数的命名定义;

拼接URL字符串

//拼接URL字符串
urlstring=[BASE_URL stringByAppendingFormat:@"%@?access_token=aa",urlstring];

NSLog(@"urlStr : %@ ",urlstring);

拼接完成以后,我们为了验证是否正确在打印一下,看一下输出的跟我们接口要的链接是否一致相对应;

接下来,我们要判断请求方式 是GET  还是 POST

我们这里用的是caseInsensitiveCompare ,所以在这里只讲一下caseInsensitiveCompare

NSString *astring01 = @"GET";
 
NSString *astring02 = @"get";    
 
BOOL result = [astring01 compare:astring02] = =
NSOrderedSame;    
 
NSLog(@"result:%d",result);    
 
//NSOrderedSame判断两者内容是否相同  忽略大小写

下边就该进行GET请求字符串的拼接了;


//处理GET请求的参数
NSComparisonResult comparRet1=[httpMethod caseInsensitiveCompare:@"GET"];
if(comparRet1==NSOrderedSame){
NSMutableString *paramsString=[NSMutableString string];
NSArray *allkeys=[params allKeys];
NSLog(@"parms : %@ \r\n",params);
for (int i=0; i<params.count; i++) {
NSString *key=[allkeys objectAtIndex:i];
id value=[params objectForKey:key];

[paramsString appendFormat:@"%@=%@",key,value];

if (i<params.count-1) {
[paramsString appendFormat:@"&"];
}
NSLog(@"paramsString : %@ ",paramsString);

}

if (paramsString.length>0) {
urlstring=[urlstring stringByAppendingFormat:@"&%@",paramsString];
}
}
NSURL *url=[NSURL URLWithString:urlstring];

NSLog(@"URL : %@ ",url);

完成以后在打印一下 检查一下字符串是否正确

今天先讲到这里,该睡觉了,谢谢大家对我的支持,关注!

如果觉得有用的话,别忘了推荐一下哦,共同学习,共同进步!

作者:zhangwenjian
出处:http://www.cnblogs.com/zhangwenjian
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

移动开发在路上-- IOS移动开发系列 网络交互四(2)

时间: 2024-07-28 14:04:11

移动开发在路上-- IOS移动开发系列 网络交互四(2)的相关文章

移动开发在路上-- IOS移动开发系列 网络交互四(3)

接着上次的讲,这次我们讲 网络请求的封装  打开创建的项目,让我们一起来继续完成他, 上次我们说到GET请求地址的拼接: 我们接着昨天的继续完善: 下边我们要定义的是 block //定义block __block ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url]; 请求超出时间 //设置请求超出时间 [request setTimeOutSeconds:60]; POST请求参数的处理 //处理POST请求方

iOS企业级开发初级课程-表视图(13集)

首先了解了表视图的组成.表视图类的构成.表视图的分类以及表视图的两个重要协议(委托协议和数据源协议),对表视图有了一个整体上的认识.接下来我们掌握了如何实现简单表视图和分节表视图,以及表视图中索引.搜索栏.分组的使用.然后我们学习了如何对表视图单元格进行删除.插入.移动等操作.最后本章向大家介绍了表视图UI设计模式方面的内容. 序号 技术点 1 表视图-1-表视图介绍 2 表视图-2-简单表视图 3 表视图-3-简单表视图下 4 表视图-4-自定义单元格 5 表视图-5-搜索栏-1 6 表视图-

iOS开发系列--网络开发

iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 50097 阅读, 53 评论, 收藏,  编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession

iOS开发系列--IOS程序开发概览ios基础

iOS开发系列--IOS程序开发概览 2014-08-04 19:42 by KenshinCui, 72273 阅读, 81 评论, 收藏,  编辑 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的知识是你日后开发IOS的基础,没有那些知识你开发IOS会很痛苦,现在很多开发人员做开发都是一知半解,程序质量确实令人担忧,所以还是希望大家能够熟练掌

iOS开发系列--网络开发网络联网程序

概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession 数据请求 文件上传 文件下载 会话 UIWebView 浏览器实现 UIWebView与页面交互 网络状态 目 录 Web请求和响应 使用代理

iOS开发-博客导出工具开发教程(附带源码)

前言: 作为一名学生, 作为一名iOS开发学习者, 我个人浏览信息包括博客, 更多的选择移动终端.然而, csdn并没有现成的客户端(不过有个web版的). 之前曾经看到一款开源的导出工具, 但是它是基于Windows平台的.导出的也仅仅是PDF格式.而且, 对于文章的导出, 需要精确URL.无法做到边浏览别导出. 另外, 我想实现的是, 可以在没有网络的情况下, 浏览自己收藏的文章.并且, 对于自己收藏的文章, 可以分类管理. 最关键的是, 对于自己的文章, 可以做一个备份.我曾经遇到过这样一

iOS/mac开发的一些知名个人博客

王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒.http://onevcat.com池 建强的博客: 池建强,70后程序员,Blogger.98年毕业,先后就职于洪恩软件.RocketSofeware和用友软件工程公司(后更名为瑞友 科技),现任瑞友科技IT应用研究院副院长.该博客最初每天发送一条Mac技巧,不过目前已经形成了一种技术和人文结合的风格,时而随笔,时而技术.h

关于ios越狱开发的那些事

也许吧,每每接触某些新东西的时候,都有点犯晕吧,这不是应该要的. 第一次接触ios越狱开发,也是这样吧.这篇主要是从无到有的说一下ios越狱的开发,网上很多的教程大部门都比较旧了吧,放在新设备上总是出现这样那样的问题,使人很是头疼. 从windows转到mac下开发,总有这个那个的不适应.习惯了vs的开发,突然用起了xcode难免有些为难,不是说xcode不好,两者都是非常好用的工具. 当然了,开发越狱程序和日常开发的iOS程序很相似,不过,越狱程序能做更强大的事情.你的设备也必须是要越狱的,你

iOS越狱开发(一)

做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结.个人不推荐使用盗版,这里主要以技术介绍为主. 这个系列里面主要介绍怎样进行越狱开发,涉及到以下几个方面: (1)主要涉及到越狱市场的建立,在App内部实现ipa的安装和卸载以及更新.参照的对象就是91助手,25pp,同步推那样的应用.建立一个盗版的App Store.当然了,如果通过299刀的企业证书的话,是不需要通过Cydia的,直接通过网页链接就可以实现app的推广,有一定的风险.这里面涉及