路线:
实例化URL
(网络资源)
利用
URL 建立URLReques (网络请求)
默认是get
请求
对于post
请求 需要创建请求数据体
利用 URLConnection 发送网络请求 (建立连接)
获得结果
或者:
(也就是:)
URL
Reques
Connection
HTTP
中利用 URLReques 建立网络请求方式: GET & POST
get 请求 是 从服务器中取
post 请求 是 往服务器中添加东西
从
URL角度 get不安全 能看到密码以及一些属性
从服务器角度看
get 是 安全的
在今后的开发中,如果使用简单的get/head请求,可以用NSURLConnction异步方法 GET查/POST增/PUT改/DELETE删/HEAD
GET
1> URL (路径)
NSString
*urlStr = [NSStringstringWithFormat:@"http://xxxxxxxxxx?username=%@&password=%@",
self.userName.text,
self.userPwd.text];
NSURL
*url = [NSURLURLWithString:urlStr];
2> NSURLRequest (请求)
NSURLRequest
*request = [NSURLRequestrequestWithURL:url];
3>
NSURLConnction 异步
( 连接)
小的数据直接利用系统包装好的方法 : sendAsynchronousRequest:queue:completionHandler:^()
方法进行连接
^(里面填写连接之后的操作)
如果是大的数据
就必须用代理方法 : NSURLConnection
*connection = [NSURLConnectionconnectionWithRequest:request
delegate:self];
接收到相应时调用
-
(void)connection:(NSURLConnection
*)connection didReceiveResponse:(NSURLResponse
*)response
接收到数据时调用
-
(void)connection:(NSURLConnection
*)connection didReceiveData:(NSData
*)data
接受完成时调用
-
(void)connectionDidFinishLoading:(NSURLConnection
*)connection
网络出错时调用
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
POST
1> URL
(路径)
NSURL
*url = [NSURLURLWithString:@"http://xxxxxxxxxxxx.php"];
2>
NSMutableURLRequest (可变的请求)
NSMutableURLRequest
*request =[NSMutableURLRequestrequestWithURL:url];
.httpMethod = @"POST”; (默认是GET 请求)
request.HTTPMethod
= @"POST";
str 从 firebug直接粘贴,或者自己写 变量名1=数值1&变量名2=数值2
NSString
*str = [NSStringstringWithFormat:@"username=%@&password=%@",self.userName.text,
self.userPwd.text];
.HTTPBody = [str
dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPBody
= [str dataUsingEncoding:NSUTF8StringEncoding];
3>
NSURLConnction 异步
小的数据也是直接利用系统包装好的方法
: sendAsynchronousRequest:queue:completionHandler:^()
方法进行连接
^(里面填写连接之后的操作)
所有网络请求
都是使用 异步请求 NSURLConnction
思路:
1> 登录完成之前,不能做后续工作!
2> 登录进行中,可以允许用户干点别的会更好!
3> 让登录操作在其他线程中进行,就不会阻塞主线程的工作
4> 结论:登陆也是异步访问,中间需要阻塞住
原文地址:http://www.cnblogs.com/itios/p/3746448.html