首页 > 代码库 > IOS发送网络请求 心得
IOS发送网络请求 心得
路线:
实例化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> 结论:登陆也是异步访问,中间需要阻塞住