习惯了用AFNetworking来处理网络请求,这次试试苹果源生控件的处理方式~~

#import "ViewController.h"

@interface ViewController () <NSURLConnectionDataDelegate>
@property (nonatomic, strong) NSMutableData *data;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; [self setupView];
} - (void)setupView
{
[self connection];
} - (void)connection
{
NSString *urlStr = [NSString stringWithFormat:@"这里存放所需要的url"]; //进行转码,以免中文乱码
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:urlStr]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
//设置请求超时时间
request.timeoutInterval = 10.0; [self sendAsyncOnBlock:request];
} //发送get请求,用block回调
- (void)sendAsyncOnBlock:(NSMutableURLRequest *)request
{
NSOperationQueue *queue = [NSOperationQueue mainQueue]; [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { //注意,这里回调block的线程,我是设置为主线程的。因为往往,在这里面,需要更新UI界面,而在iOS开发中,
//更新UI界面必须在主线程中更新~~
//
//然后,解析json if (data){ //请求成功
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; //解析数据 }
else{ //请求失败
//返回的json数据为空
}
}];
} //使用代理方式,发送get请求
- (void)sendAsyncOnDelegate:(NSMutableURLRequest *)request
{
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
[connection start];
} //发送post请求
- (void)sendPostReq
{
NSString *urlStr = [NSString stringWithFormat:@"这里存放所需要的url"]; //进行转码,以免中文乱码
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:urlStr]; //设置为post请求
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; //默认是get请求
request.HTTPMethod = @"POST";
request.timeoutInterval = 10.0; //通过请求头,告知服务器,客户端的类型
[request setValue:@"ios" forHTTPHeaderField:@"User-Agent"]; //设置请求体:(必须要设置,没有具体数据,不做示范)
// NSString *param = [NSString stringWithFormat:];
// request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding]; //发送请求
NSOperationQueue *queue = [NSOperationQueue mainQueue];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { }];
} #pragma mark -- NSURLConnectionDataDelegate //当接受到服务器的响应(连通了服务器)就会调用
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
self.data = [[NSMutableData alloc] init];
} //请求错误(失败)的时候调用(请求超时\断网\没有网, 一般指客户端错误)
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{ } //当接受到服务器的数据就会调用(可能会被调用多次, 每次调用只会传递部分数据)
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//在这里,当下载大文件资源时,是需要拼接数据的
[self.data appendData:data];
} //当服务器的数据接受完毕后就会调用
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{ }
@end

NSURLConnection的Get\Post方法的更多相关文章

  1. iOS开发——网络篇——NSURLSession,下载、上传代理方法,利用NSURLSession断点下载,AFN基本使用,网络检测,NSURLConnection补充

    一.NSURLConnection补充 前面提到的NSURLConnection有些知识点需要补充 NSURLConnectionDataDelegate的代理方法有一下几个 - (void)conn ...

  2. 网络接口 使用NSURLConnection完成Get和Post方法

    网络接口 使用NSURLConnection完成Get和Post方法 什么是URL: URL就是统一资源定位器(UniformResourceLocator:URL).通俗地说,它是用来指出某一项信息 ...

  3. NSURLConnection经常使用的代理方法

    NSURLConnection的代理Protocol定义有三类:NSURLConnectionDelegate.NSURLConnectionDataDelegate和NSURLConnectionD ...

  4. 25条提高iOS app性能的方法和技巧

    以下这些技巧分为三个不同那个的级别---基础,中级,高级. 基础 这些技巧你要总是想着实现在你开发的App中. 1. 用ARC去管理内存(Use ARC to Manage Memory) 2.适当的 ...

  5. 让NSURLConnection在子线程中运行

    可以有两个办法让NSURLConnection在子线程中运行,即将NSURLConnection加入到run loop或者NSOperationQueue中去运行. 前面提到可以将NSTimer手动加 ...

  6. iOS多线程的初步研究(五)-- 如何让NSURLConnection在子线程中运行

    可以有两个办法让NSURLConnection在子线程中运行,即将NSURLConnection加入到run loop或者NSOperationQueue中去运行. 前面提到可以将NSTimer手动加 ...

  7. 如何让NSURLConnection在子线程中运行

    可以有两个办法让NSURLConnection在子线程中运行,即将NSURLConnection加入到run loop或者NSOperationQueue中去运行. 前面提到可以将NSTimer手动加 ...

  8. iOS开发系列-NSURLConnection

    概述 NSURLConnection是负责发送请求,建立客户端与服务端的连接.发送数据给服务器,并收集来自服务器的响应数据.其中NSURLRequest类是用来封装一个请求,包含NSURL对象.请求方 ...

  9. 总结iOS开发中的断点续传那些事儿

    前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...

随机推荐

  1. 归并排序(C++实现)

         归并排序是利用"归并"技术来进行排序.归并是指将若干个已排序的子文件合并成一个有序的文件.常见的归并排序有两路归并排序(Merge Sort),多相归并排序(Polyph ...

  2. POJ 2513 Colored Sticks (欧拉回路 + 字典树 +并查集)

    Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 27097   Accepted: 7175 ...

  3. appium简明教程(7)——Desired Capabilities详解

    Desired Capabilities在启动session的时候是必须提供的. Desired Capabilities本质上是key value的对象,它告诉appium server这样一些事情 ...

  4. Unix网络编程 之 基本套接字调用(一)

    Unix/Linux支持伯克利风格的套接字编程,它同一时候支持面向连接和面向无连接类型的套接字. 套接字最经常使用的一些系统调用: socket() bind() connect() listen() ...

  5. 常用DC-DC;AC-DC电源芯片

    求推荐几个常用的开关电源芯片http://bbs.21ic.com/icview-1245974-1-1.html(出处: 21ic电子技术论坛) 1.1 DC-DC电源转换器 1.低噪声电荷泵DC- ...

  6. java File类中的mkdir()和mkdirs()有什么区别

    mkdir() 只能在已经存在的目录中创建创建文件夹. mkdirs() 可以在不存在的目录中创建文件夹.诸如:a\\b,既可以创建多级目录.

  7. Gituhb 上一些值得攻读的玩具代码库

    https://github.com/sindresorhus/globby https://github.com/dylansmith/node-exif-renamer https://githu ...

  8. Knockout: 使用knockout validation插件进行校验, 给未通过校验的输入框添加红色边框突出显示.

    之前整理了三篇帖子: Knockout: 使用CSS绑定和event的blur失去焦点事件, 给未通过校验的输入框添加红色边框突出显示. http://www.cnblogs.com/liuzhend ...

  9. WEB服务器搭建–IIS

    功能作用 IIS是一个World Wide Web server.Gopher server和FTP server全部包容在里面. IIS意味着你能发布网页,并且有ASP(Active Server ...

  10. 如何使用好android的可访问性服务(Accessibility Services)

    原文:http://android.eoe.cn/topic/android_sdk * 主题* Manifest声明和权限 可访问性服务声明 可访问性服务配置 AccessibilityServic ...