iOS开发之注册登录 (需要服务器支持)
2013-11-26 17:04
190 查看
本人第一个接手的模块是注册登陆模块 由于各个软件需求算法不同 加密算法省略 (多为SHA256 AES256)
着重写一下网络请求
代码如下
NSString *loginInfoString = [NSString stringWithFormat:@"xml=%@#%s#%s#", /*账号字符串*/, /*AES密码字符串*/, /*密码字符串*/; //拼接字符串
NSLog(@"login send info :%@", loginInfoString); //发送请求字符串
NSString *post = loginInfoString;
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; //返回一个对象,使用了给定编码其中包含NSData接收 机编码的一种表示方法。
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; //字符串长度
NSString *strUDID = [UIDevice currentDevice].uniqueIdentifier; //获取机器UDID
NSArray *array = [strUDID componentsSeparatedByString:@"-"]; //分隔符
NSMutableString *strNewString = [[NSMutableString alloc] initWithCapacity:20];
for(NSString *subString in array)
{
[strNewString appendString:subString];
}
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
NSMutableDictionary *dicHeader = [NSMutableDictionary dictionary]; //字典对象用来存SN,UDID
[dicHeader setValue:CJH_PUBLUIC_SN forKey:@"Sn"]; //获取SN
[dicHeader setValue:strNewString forKey:@"UDID"]; //获取UDID
[dicHeader setValue:CURRENT_VERSION forKey:@"Version"];
NSURL *url = [NSURL URLWithString:/*请求地址*/];
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]]; //POST允许Https
[request setURL:[NSURL URLWithString:/*请求地址*/]]; //向服务器发送消息
[request setHTTPMethod:@"POST"]; //发送方式
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; //头字节长度
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; //发送类型
[request setHTTPBody:postData];
[request setAllHTTPHeaderFields:dicHeader];
NSHTTPURLResponse *respone;
NSError *error = nil;
//接受返回信息
NSData *myReturn=[NSURLConnection sendSynchronousRequest:request returningResponse:&respone error:&error];
//返回信息格式转换
NSString *trimText = [[[NSString alloc] initWithData:myReturn encoding:NSUTF8StringEncoding] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"return :%@",trimText);
//返回信息判断
if(0==[trimText length])
{
NSLog(@"没有返回数据!!!!");
}
else
{
//根据返回信息格式做进一步操作
}
上述是需要往头里拼字段的请求方法
ASIHttpRequest更强大 只是小弟不会用...
登录的方法类同 需要注册后服务器的返回进行登录请求
着重写一下网络请求
代码如下
NSString *loginInfoString = [NSString stringWithFormat:@"xml=%@#%s#%s#", /*账号字符串*/, /*AES密码字符串*/, /*密码字符串*/; //拼接字符串
NSLog(@"login send info :%@", loginInfoString); //发送请求字符串
NSString *post = loginInfoString;
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; //返回一个对象,使用了给定编码其中包含NSData接收 机编码的一种表示方法。
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; //字符串长度
NSString *strUDID = [UIDevice currentDevice].uniqueIdentifier; //获取机器UDID
NSArray *array = [strUDID componentsSeparatedByString:@"-"]; //分隔符
NSMutableString *strNewString = [[NSMutableString alloc] initWithCapacity:20];
for(NSString *subString in array)
{
[strNewString appendString:subString];
}
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
NSMutableDictionary *dicHeader = [NSMutableDictionary dictionary]; //字典对象用来存SN,UDID
[dicHeader setValue:CJH_PUBLUIC_SN forKey:@"Sn"]; //获取SN
[dicHeader setValue:strNewString forKey:@"UDID"]; //获取UDID
[dicHeader setValue:CURRENT_VERSION forKey:@"Version"];
NSURL *url = [NSURL URLWithString:/*请求地址*/];
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]]; //POST允许Https
[request setURL:[NSURL URLWithString:/*请求地址*/]]; //向服务器发送消息
[request setHTTPMethod:@"POST"]; //发送方式
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; //头字节长度
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; //发送类型
[request setHTTPBody:postData];
[request setAllHTTPHeaderFields:dicHeader];
NSHTTPURLResponse *respone;
NSError *error = nil;
//接受返回信息
NSData *myReturn=[NSURLConnection sendSynchronousRequest:request returningResponse:&respone error:&error];
//返回信息格式转换
NSString *trimText = [[[NSString alloc] initWithData:myReturn encoding:NSUTF8StringEncoding] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"return :%@",trimText);
//返回信息判断
if(0==[trimText length])
{
NSLog(@"没有返回数据!!!!");
}
else
{
//根据返回信息格式做进一步操作
}
上述是需要往头里拼字段的请求方法
ASIHttpRequest更强大 只是小弟不会用...
登录的方法类同 需要注册后服务器的返回进行登录请求
相关文章推荐
- iOS开发一个用户登录注册模块需要解决的坑
- 黑马程序员——iOS 开发学习---控件制作登录注册页面
- iOS 开发苹果由http改为https 之后,如果服务器不做相应的修改,那么客户端需要做点更改
- iOS开发用户登录注册模块所遇到的问题
- 基于tigase服务器的安卓客户端开发---注册登录
- IOS开发用户登录注册模块所遇到的问题
- 【unity】【jit】【游戏开发】讲解ios系统不支持JIT的来龙去脉,以及unity在IOS上需要使用反射时候的替代方案
- iOS开发 密码相关 注册登录 流程
- iOS开发之基于parse的登录注册
- iOS实战演练之关于数据交互的问题(利用XAMPP搭建本地服务器, 编写PHP代码实现iOS端注册登录功能)
- 黑马程序员——iOS 开发学习---登录注册页面跳转
- 【转】一个域名是用哪里的DNS来解析的,电脑怎么知道找哪一个DNS呢? 我注册域名的时候会在服务商那里配置DNS解析,一般需要24小时后才能访问,我想知道,解析后的这个数据是不是会同步到世界上所有的DNS服务器呢!如果不是,当我访问我的这个域名的时候,电脑怎么知道去找到我注册的这一家的DNS服务器呢,谁告诉他的呢?
- IOS开发网络篇之──ASIHTTPRequest下载示例(支持断点续传)
- iOS兼容开发:让程序同时支持iOS6和iOS7
- iOS 登录与注册的界面跳转
- Android----- MD5加密(登录注册得到与IOS相同的加密值,并且解决两个平台汉字加密不相同问题)
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
- iOS开发 - 搜索(模糊搜索 支持拼音检索 首字母等)
- 【如何快速的开发一个完整的iOS直播app】(搭建Socket即时通讯服务器)
- win7 2008 尚未在 Web 服务器上注册ASP.NET 4.0。为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 4.0,按 F1 可了解更多详细信息。