选用 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":@""};
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 的一些建议的更多相关文章
- python基础课程_2学习笔记3:图形用户界面
图形用户界面 丰富的平台 写作Python GUI程序前,须要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合.能够通过叫做GUI工具包的给定Python模块进行訪问. 工具包 描写叙 ...
- Prism for WPF初探(构建简单的模块化开发框架)
先简单的介绍一下Prism框架,引用微软官方的解释: Prism provides guidance to help you more easily design and build, flexibl ...
- MongoDB存储引擎选择
MongoDB存储引擎选择 MongoDB存储引擎构架 插件式存储引擎, MongoDB 3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便,这一变化无疑参考了MyS ...
- Prism for WPF
Prism for WPF Prism for WPF初探(构建简单的模块化开发框架) 先简单的介绍一下Prism框架,引用微软官方的解释: Prism provides guidance to ...
- MongoDB 存储引擎选择
MongoDB存储引擎选择 MongoDB存储引擎构架 插件式存储引擎, MongoDB 3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便,这一变化无疑参考了MyS ...
- Pytorch 四种边界填充方式(Padding)
1. 选用卷积之前填充(强烈建议) 小生非常推荐大家不再使用卷积所带的填充方式,虽然那种方式简单,但缺陷太多.① 不能根据自己的需要来决定上与下填充不等的边界,左右填充不等的边界:② 边界填充零容易出 ...
- kong的管理UI选择-konga
目录 npm方式安装 1. 准备依赖环境 2. 安装konga 3. 配置 4. 环境变量(more) 5. 数据库 配置 初始化/迁移 6. 运行 Docker方式安装 关于Kong-Dashboa ...
- 建议8:恰当选用if和switch
相对来说下面几种情况更适合switch结构 枚举表达式的值.这种枚举是可以期望的,平行逻辑关系的 表达式的值具有离散性,不具有线性的非连续的区间值 表达式的值是固定的,不是动态变化的 表达式的值是有限 ...
- Xml 建议优先使用属性
要点:建议优先选用属性的方式记录数据,除非还需要包容层级式的数据. 优点: 1. 可以完全覆盖关系型数据库的数据格式设计,利于交换. 2. 占用空间小.相当于 JSON 格式,不再有大量重复的节点名后 ...
随机推荐
- 教你50招提升ASP.NET性能(二十二):利用.NET 4.5异步结构
(40)Take advantage of .NET 4.5 async constructs 招数40: 利用.NET 4.5异步结构 With the arrival of .NET 4.5, w ...
- extjs grid renderer用法【转载】
今天在做项目时,需要在列表中的某列添加一个超链接,首先要取得当前选中行的数据,判断数据类型,然后链接到不同的页面,研究下.发现ExtJs提供了一个很强的方法如下: var cm = new Ext.g ...
- socket.io+angular.js+express.js做个聊天应用(一)
node,express开发环境等安装如果已经搞好了. justhacker@justhacker-ThinkPad-Edge-E440:~/projects/nodejs$ express -e c ...
- 关于Python中的self
虽然我现在写过一些Python代码,但实际上几乎还没用过Class,而且一直觉得一个很别扭的事情是,Class中的函数都要写个参数self,虽然实例化调用的时候不需要. 当然,一开始就知道Python ...
- php openssl 生成公私钥,根据网上文章整理的
linux下没有问题,win下有报错 <?php$configargs = array("config" => "/usr/local/php/ext/ope ...
- Fedora 19安装Fcitx输入法并安装搜狗输入法资源包
系统自带的Ibus输入法非常的不好用.在Sublime Text下中文根本不能输入.于是想着换成Fcitx. 1.先卸载系统自带的Ibus输入法 sudo yum remove ibus gsetti ...
- 项目源码--Android基于LBS地理位置信息应用的客户端
下载源码 技术要点: 1. LBS应用框架客户端实现 2. 登录与注册系统 3. TAB类型UI实现 4. HTTP通信模块 5. 源码带详细的中文注释 ...... 详细介绍: 1. LBS应用框架 ...
- SQLite数据库中获取新插入数据的自增长ID
SQLite数据库中有一有列名为ID的自增列,项目需求要在向数据库在插入新数据的同时返回新插入数据行的ID. 我这里用事务,把插入和查询语句通过ExecuteReader一起提交,返回DbDataRe ...
- centos搭建本地库
--2013年8月23日11:00:26环境:centos6.3(64bit)--场景默认情况下在用yum install 安装软件会从配置库中下载依赖包默认依赖库:来自网络在本地搭建依赖库可以节约带 ...
- java+mysql实现保存图片到数据库,以及读取数据库存储的图片
一:建表 二:获取数据库连接 1:导入mysql的驱动jar包,mysql-connector-java-5.1.8-bin.jar 2:写代码连接数据库,如下: /** * */ package c ...