博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
supersr--NSURLConnection iOS2.0苹果原生请求
阅读量:6547 次
发布时间:2019-06-24

本文共 3842 字,大约阅读时间需要 12 分钟。

get请求1:
 
NSURL*url = [NSURLURLWithString:@" "];
   
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:15];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        //
        if (!connectionError) {
            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
          
            //判断服务器返回是否成功
            if (httpResponse.statusCode == 200) {
                //处理服务器返回的数据(解析json)
               
                //把json形式的字符串 解析成对象
               
//                NSJSONReadingMutableContainers = (1UL << 0),  //返回的数组或字典是可变的
//                NSJSONReadingMutableLeaves = (1UL << 1),  //设置json中的字符串是可变的 .但是ios7之后.就不起作用了
               
                //以上两种方式要求.返回的数据必须是json形式的字符串,否则解析会出错
//                NSJSONReadingAllowFragments = (1UL << 2)  //不要求数据是json形式的字符串
               
               
                // 解析json返回的对象,只有两种类型 字典  数组
                NSError *error= nil;
                id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
                //判断解析json的时候是否出错
                if (!error) {
                   
                    NSLog(@"%@",json);
//                    NSLog(@"%@  %@",json[@"message"],[json[@"message"] class]);
                }else{
                    NSLog(@"解析json出错:%@",error);
                }
            }else{
                NSLog(@"服务器内部错误");
            }
        }else{
            NSLog(@"发送请求错误 %@",connectionError);
        }
    }];
}
 
get请求2:(请求头携带参数需要转义)
 
 
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
   
   
    //当url的字符串,有特殊内容(汉字,空格,url中的特殊符号)
    NSString *name = @"abc&123";
    //只会对汉字 空格进行百分号的转义
    name = [name stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //对url中的特殊符号进行转义
    name = [self encodeToPercentEscapeString:name];
   
    NSString *pwd = @"abc";
    NSString *str = [NSString stringWithFormat:@"http://127.0.0.1/php/login.php?username=%@&password=%@",name,pwd];
   
    NSURL *url = [NSURL URLWithString:str];
    NSLog(@"%@",url);
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
   
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        //
        if (!connectionError) {
            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
            if (httpResponse.statusCode == 200) {
                //
                id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
                NSLog(@"%@",json);
            }else{
                NSLog(@"服务器内部错误");
            }
        }else{
            NSLog(@"请求错误%@",connectionError);
        }
    }];
}
//进行url编码 (但是不对汉字和空格进行编码)
- (NSString *)encodeToPercentEscapeString: (NSString *) input
{
    NSString *outputStr = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)input,NULL,(CFStringRef)@"!*'();:@&=+ $,/?%#[]",kCFStringEncodingUTF8));
    return outputStr;
}
//url解码
- (NSString *)decodeFromPercentEscapeString: (NSString *) input
{
    return [input
            stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ;
}
 
post请求:(携带参数请求体传递)
 
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    //当url的字符串,有特殊内容(汉字,空格,url中的特殊符号)
  
   
    NSURL *url = [NSURL URLWithString:@" "];
 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    //设置发送post请求
    request.HTTPMethod = @"post";
   
    //请求体    没有对url中的特殊符号转义
    NSString *name = @"abc123"; //自动对汉字和空格做了百分号转义
   
    NSString *pwd = @"abc";
    NSString *strBody = [NSString stringWithFormat:@"username=%@&password=%@",name,pwd];
    request.HTTPBody = [strBody dataUsingEncoding:NSUTF8StringEncoding];
   
   
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        //
        if (!connectionError) {
            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
            if (httpResponse.statusCode == 200) {
                //
                id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
                NSLog(@"%@",json);
            }else{
                NSLog(@"服务器内部错误");
            }
        }else{
            NSLog(@"请求错误%@",connectionError);
        }
    }];
}

转载于:https://www.cnblogs.com/supersr/p/4833355.html

你可能感兴趣的文章
Cocos2D v2.0至v3.x简洁转换指南(二)
查看>>
[ Talk is Cheap Show me the CODE ] : jQuery Mobile工具栏
查看>>
《裸阳》对互联网公司对技术人的启示
查看>>
Guava库学习:学习Guava Cache(四)CacheBuilderSpec
查看>>
ldap服务简单部署
查看>>
打造高性能高可靠块存储系统
查看>>
TCP/IP及内核参数优化调优
查看>>
LINUX查看CPU信息
查看>>
一个综合的分布式项目之功能代码
查看>>
DbVisualizer 连接DB2数据库失败
查看>>
Android获取屏幕高度及宽度
查看>>
AppServ开启虚拟主机
查看>>
如何定位和解决Andorid的内存溢出问题(大总结)
查看>>
Android 对话框(Dialog)大全 建立你自己的对话框
查看>>
Ubuntu 11.04下安装Eclipse
查看>>
软件项目管理中的十个误区-转载自CSDN
查看>>
git的一些地址
查看>>
java四舍五入(保留两位小数)
查看>>
京东云引擎:免费好用的web应用托管平台
查看>>
Linux下php安装openSSL模块
查看>>