• 选用 get 与 post 的一些建议


    1、http的请求方法:get  post

    2、 get:会把请求的内容  放到链接地址里面(数据请求的时候  默认的是get请求)

            例:www.baidu.com/user/login?username=刘水,psw=123  (密码暴露在外面)

      2.1、 get特征:

              1、浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1kB

               2、会把请求的数据 暴露在接口里面

    3、post: 参数全部放在请求体中

          这样就保证了  数据的安全

          没有具体的长度限制(唯一的限制 就是 服务器的承受能力)

    4、选择get 和 post的建议:

        4.1、如果要传递大量数据,比如文件上传,只能用post请求

        4.2、get的安全性比post要差一些,如果包含机密敏感信息,建议使用post

        4.3、如果仅仅是索取数据(数据查询),建议使用get

        4.4、如果是增加、修改、删除数据,建议使用post

     接口:

         通过id获取用户信息:host/user/info

         id = @""

    5、URL:Uniform Resource Locator(统一资源定位符)

     通过URL,能找到互联网上唯一的一个资源

     

    6、网络请求:同步请求   异步请求

        6.1、同步请求:等所有操作完全执行完毕 才会继续执行

             同步请求的缺陷:会遇到 假死现象(只要请求的操作没有执行完毕就不会再去响应任何事件(在同一线程))

        6.2、异步请求:在程序运行的时候,会利用空闲的时间,去执行里面的操作;不会影响到同一线程里面的其他操作

    //   get 获取方法
    
        NSString *interfaceString = @"http://apis.baidu.com/showapi_open_bus/mobile/find";
        NSString *requestContentString = @"num=18798810755";
        
        NSString *urlString = [NSString stringWithFormat:@"%@?%@", interfaceString, requestContentString];
        
    //    把链接地址字符串 转换成 NSUTF8StringEncoding
        NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        
    //    可变请求 可以添加 请求方式  以及请求的 请求头 或者更多
    //    timeoutInterval 请求所需时间  超过 时间  不再发送这个请求
    //    cachePolicy 缓存内容的方式
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    //    指定http的请求方式
        request.HTTPMethod = @"GET";  // 字符一定要大写
         NSString *apiKey = @"apiKey";
        
    //    把apikey 发送给服务器指定的请求头 位置
    //    forHTTPHeaderField 需要的KEY  是服务器指定的key
        [request addValue:apiKey forHTTPHeaderField:@"apiKey"];
        
    //    用异步发送
        [NSURLConnection sendAsynchronousRequest:request
                                           queue:[[NSOperationQueue alloc]init]
                               completionHandler:^(NSURLResponse *response,
                                                   NSData *data,
                                                   NSError *connectionError) {
            
            NSLog(@"%@", response);
            
    //        解析 json 文件
            
    //        把data 转换成 json 文件  (这个方法可以在网上找到第三方方法)
    //        这里的之所以用字典接受 是因为进入 JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil 方法后查看到它是id类型
    //        NSLog(@"data~ %@", data);
            NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            NSLog(@"解析数据:%@", info);
            NSLog(@"%@ %@ %@", info[@"showapi_res_body"][@"prov"], info[@"showapi_res_body"][@"city"], info[@"showapi_res_body"][@"name"]);
            
            
        }];
    
    //  post 获取方式
    
     NSURL *url = [NSURL URLWithString:@"http://www.weihuok.com/customer2/GetService"];
        
        NSDictionary *dic = @{@"PlatformType":@"3"};
        
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy  timeoutInterval:10];
        
    //    设置HTTP请求的方式
        request.HTTPMethod = @"POST";
        
    //    设置 请求的参数
    //    HTTPBody 要的是data
    //    dataUsingEncoding 把字符串 转成data
        request.HTTPBody = [[NSString stringWithFormat:@"%@", dic] dataUsingEncoding:NSUTF8StringEncoding];
        
        [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
            
            NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            NSLog(@"info~%@", info);
            NSURL *url = [NSURL URLWithString:info[@"data"][@"adUrl"]];
            
            //    (NSURLRequest 请求)
            //  实例化 请求对象 里面携带着 请求的地址
            NSURLRequest *request = [NSURLRequest requestWithURL:url];
            
            //   需要 通过 连接 异步发送(Asynchronous 异步) 请求
            //    线程
            NSOperationQueue *queue = [[NSOperationQueue alloc]init];
            
            //    发送一个异步请求 在queue 这个线程里面去执行
            [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data1, NSError *connectionError) {
                
                //        response 是服务器  回应的内容(回应状态的code 以及错误信息error)
                //        data 是回应给客户端 需要的数据
                UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.frame];
                imageView.image = [UIImage imageWithData:data1];
                [self.view addSubview:imageView];
    
        }];
        
        
        }];
  • 相关阅读:
    Vue-router的实现原理
    get请求被浏览器跨域的同源策略请求机制拦截,但是get请求是否请求到了服务器呢
    合并两个有序链表
    JS实现链式调用 a().b().c()
    CSS知识点总结
    BK-信息查找、摘取
    radar图生成用户guideline
    【转】 mybatis 详解(七)------一对一、一对多、多对多
    【转】 mybatis 详解(六)------通过mapper接口加载映射文件
    【转】 mybatis 详解(五)------动态SQL
  • 原文地址:https://www.cnblogs.com/cnrong/p/4827463.html
Copyright © 2020-2023  润新知