Get&Post登录
#import "MJViewController.h" @interface MJViewController ()
@property (weak, nonatomic) IBOutlet UITextField *userName;
@property (weak, nonatomic) IBOutlet UITextField *userPwd; @property (weak, nonatomic) IBOutlet UILabel *logonResult; @end @implementation MJViewController
/**
所有网络请求,统一使用异步请求! 在今后的开发中,如果使用简单的get/head请求,可以用NSURLConnction异步方法
GET查/POST增/PUT改/DELETE删/HEAD 18 GET
19 1> URL
20 2> NSURLRequest
21 3> NSURLConnction 异步
22
23 POST
24 1> URL
25 2> NSMutableURLRequest
26 .HTTPMethod = @"POST";
27 str 从 firebug直接粘贴,或者自己写
28 变量名1=数值1&变量名2=数值2
29
30 .HTTPBody = [str dataUsingEncoding:NSUTF8StringEncoding];
31 3> NSURLConnction 异步 */
- (IBAction)userLogon
{
[self postLogon];
} #pragma mark - POST登录
- (void)postLogon
{
// 1. URL
NSURL *url = [NSURL URLWithString:@"http://localhost/login.php"]; // 2. 请求(可以改的请求)
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
// ? POST
// 默认就是GET请求
request.HTTPMethod = @"POST";
// ? 数据体
NSString *str = [NSString stringWithFormat:@"username=%@&password=%@", self.userName.text, self.userPwd.text];
// 将字符串转换成数据
request.HTTPBody = [str dataUsingEncoding:NSUTF8StringEncoding]; // 3. 连接,异步
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { if (connectionError == nil) {
// 网络请求结束之后执行!
// 将Data转换成字符串
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; // num = 2
NSLog(@"%@ %@", str, [NSThread currentThread]); // 更新界面
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
self.logonResult.text = str;
}];
}
}]; // num = 1
NSLog(@"come here %@", [NSThread currentThread]);
} #pragma mark - GET登录
- (void)getLogon
{
// 1. URL
NSString *urlStr = [NSString stringWithFormat:@"http://localhost/login.php?username=%@&password=%@", self.userName.text, self.userPwd.text]; NSURL *url = [NSURL URLWithString:urlStr]; // 2. Request
NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 3. Connection
// 1> 登录完成之前,不能做后续工作!
// 2> 登录进行中,可以允许用户干点别的会更好!
// 3> 让登录操作在其他线程中进行,就不会阻塞主线程的工作
// 4> 结论:登陆也是异步访问,中间需要阻塞住
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { if (connectionError == nil) {
// 网络请求结束之后执行!
// 将Data转换成字符串
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; // num = 2
NSLog(@"%@ %@", str, [NSThread currentThread]); // 更新界面
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
self.logonResult.text = @"登录完成";
}];
}
}]; // num = 1
NSLog(@"come here %@", [NSThread currentThread]); NSURLResponse *response = nil;
// 1. &response真的理解了吗?
// 2. error:为什么是NULL,而不是nil
// NULL是C语言的 = 0
// 在C语言中,如果将指针的地址指向0就不会有危险 // nil是OC的,是一个空对象发送消息不会出问题
// [response MIMEType];
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL];
} @end
Get&Post登录的更多相关文章
- 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态
最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...
- TODO:Laravel 内置简单登录
TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...
- web全栈开发之网站开发二(弹出式登录注册框前端实现-类腾讯)
这次给大家分享的是目前很多网站中流行的弹出式登录框,如下面的腾讯网登录界面,采用弹出式登录的好处是大大提升了网站的用户体验和交互性,用户不用重新跳转到指定的页面就能登录,非常方便 先来个演示地址 要实 ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- PHP验证用户登录例子-学习笔记
1.基本流程: 2.UML类图: 3.PHP代码: 3.1 index.php <?php /** * Created by PhpStorm. * User: andy * Date: 16- ...
- AJAX实现登录界面
使用php跳转界面和AJAX都可实现登录界面的跳转的登录失败对的提醒.但是,php跳转的方式 需要额外加载其他界面,用户体验差.AJAX可实现当前页面只刷新需要的数据,不对当前网页进行 重新加载或者是 ...
- 微信网页开发之获取用户unionID的两种方法--基于微信的多点登录用户识别
假设网站A有以下功能需求:1,pc端微信扫码登录:2,微信浏览器中的静默登录功能需求,这两种需求就需要用到用户的unionID,这样才能在多个登录点(终端)识别用户.那么这两种需求下用户的unionI ...
- 基于SignalR的消息推送与二维码描登录实现
1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...
- 登录(ajax提交数据和后台校验)
1.前台ajax数据提交 <form id="login_form" action="" method="POST"> < ...
- 著名ERP厂商的SSO单点登录解决方案介绍一
SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户 ...
随机推荐
- C语言函数sscanf()的用法
从文件读取数据是一件很麻烦的事,所幸有sscanf()函数. C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( st ...
- 牛逼的OSQL----大数据导入
详情见链接: http://www.cnblogs.com/dunitian/p/5276449.html
- [转]IPTABLES中SNAT和MASQUERADE的区别
IPtables中可以灵活的做各种网络地址转换(NAT)网络地址转换主要有两种:SNAT和DNAT SNAT是source network address translation的缩写即源地址目标转换 ...
- 提示reg不是批处理命令怎么办
'regsvr32' 不是内部或外部命令,也不是可运行的程序或批处理文件.请按任意键继续. . . 系统环境变量被改了进入控制面板>高级>环境变量>系统变量,Path双击一下,填入C ...
- highstock-处理时间需要处理世界时间偏移量
highstock的数据格式采用的是[[时间,数据],[时间,数据],[时间,数据],[时间,数据]],而时间采用的是13位的毫秒值,如[1133136000000,69.66],采用的时间格式为UT ...
- 使用IDEA自带的rest client参数传递乱码问题
在idea使用rest client(idea自带的访问请求地址工具)调试的时候,有时出现中文会乱码的情况 解决方法如下: 1.打开IDEA安装路径下的bin文件夹里面的idea64.ex ...
- MVC+Jsonp实现跨域交互
一.认识Jsonp JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式 ...
- WebApi支持命名空间重名问题
using System;using System.Collections.Concurrent;using System.Collections.Generic;using System.Linq; ...
- Hive 中的分号问题
1. hive表中有一列值,是以 分号 ; 为分隔符连接存储的 1470047164;1470047628;1470049068;1470048978;1470048922;1470047658;1 ...
- bzoj3295: [Cqoi2011]动态逆序对(cdq分治)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...