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":@""};

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy  timeoutInterval:];

//    设置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]; }]; }];

选用 get 与 post 的一些建议的更多相关文章

  1. python基础课程_2学习笔记3:图形用户界面

    图形用户界面 丰富的平台 写作Python GUI程序前,须要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合.能够通过叫做GUI工具包的给定Python模块进行訪问. 工具包 描写叙 ...

  2. Prism for WPF初探(构建简单的模块化开发框架)

    先简单的介绍一下Prism框架,引用微软官方的解释: Prism provides guidance to help you more easily design and build, flexibl ...

  3. MongoDB存储引擎选择

    MongoDB存储引擎选择 MongoDB存储引擎构架 插件式存储引擎, MongoDB 3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便,这一变化无疑参考了MyS ...

  4. Prism for WPF

    Prism for WPF Prism for WPF初探(构建简单的模块化开发框架)   先简单的介绍一下Prism框架,引用微软官方的解释: Prism provides guidance to ...

  5. MongoDB 存储引擎选择

    MongoDB存储引擎选择 MongoDB存储引擎构架 插件式存储引擎, MongoDB 3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便,这一变化无疑参考了MyS ...

  6. Pytorch 四种边界填充方式(Padding)

    1. 选用卷积之前填充(强烈建议) 小生非常推荐大家不再使用卷积所带的填充方式,虽然那种方式简单,但缺陷太多.① 不能根据自己的需要来决定上与下填充不等的边界,左右填充不等的边界:② 边界填充零容易出 ...

  7. kong的管理UI选择-konga

    目录 npm方式安装 1. 准备依赖环境 2. 安装konga 3. 配置 4. 环境变量(more) 5. 数据库 配置 初始化/迁移 6. 运行 Docker方式安装 关于Kong-Dashboa ...

  8. 建议8:恰当选用if和switch

    相对来说下面几种情况更适合switch结构 枚举表达式的值.这种枚举是可以期望的,平行逻辑关系的 表达式的值具有离散性,不具有线性的非连续的区间值 表达式的值是固定的,不是动态变化的 表达式的值是有限 ...

  9. Xml 建议优先使用属性

    要点:建议优先选用属性的方式记录数据,除非还需要包容层级式的数据. 优点: 1. 可以完全覆盖关系型数据库的数据格式设计,利于交换. 2. 占用空间小.相当于 JSON 格式,不再有大量重复的节点名后 ...

随机推荐

  1. 在Mac OS X下让你的Terminal带上Color

    之所以我们这么喜欢OS X,是它自带了command line工具,但是Apple厂商为Terminal设置很多的默认值,导致界面很丑没有什么颜色我们很伤心,同时我们希望界面是五颜六色的,至少是彩色的 ...

  2. UVa839 Not so Mobile

      我的解法: 建树,递归判断 #include<cstdio> #include<cstring> #include<iostream> #include< ...

  3. GLSL 基础量定义

    GLSL语法跟C语言非常相似: 1.数据类型: GLSL包含下面几种简单的数据类型 float bool :false or ture int 向量: vec   {2,3,4}     长度为2, ...

  4. Android提高21篇之一:MediaPlayer

    本文介绍MediaPlayer的使用.MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用Med ...

  5. Android开发 MMS支持 创建和编辑MMS

    Composing and editing MMS在Android Mms 应用里面的具体实现形式,或数据结构是SlideshowModel,它是一个每个节点为SlideModel的 ArrayLis ...

  6. 解决用ASP.NET下载文件时,文件名为乱码的问题

    关键就一句:                    string strTemp = System.Web.HttpUtility.UrlEncode(strName, System.Text.Enc ...

  7. Windows 10正式版官方原版ISO镜像下载

    [微软官方]下载地址1:官方下载工具(32-位系统版本)官方下载工具(64-位系统版本) [MSDN]下载地址2:cn_windows_10_multiple_editions_x64_dvd_684 ...

  8. win7系统激活最简单方法

    利用激活工具快速激活WIN7系统! 工具/原料 小马Oem7.未激活的WIN7系统 步骤/方法 1 复制BT种子 http://www.pccppc.com/download/oem7F.rar粘贴到 ...

  9. MYSQL查询今天昨天本周本月等的数据

    mysql查询本季度 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT *FROM表名WHERE TO_DAYS ...

  10. Koa2 源码解析(1)

    Koa2 源码解析 其实本来不想写这个系列文章的,因为Koa本身很精简,一共就4个文件,千十来行代码. 但是因为想写 egg[1] 的源码解析,而egg是基于Koa2的,所以就先写个Koa2的吧,用作 ...