网络请求之GET、POST请求
网络请求-GET请求:
1,NSURL:
请求地址。
2,NSURLRequest :一个NSURLRequest对象就代表一个请求。它包括的信息有:
1)一个NSURL对象
GET请求,不须要写请求头、请求体,仅仅要告诉请求路径和请求參数就能够了。
2)请求方法
3)请求超时
3,NSMutableURLRequest : NSURLRequest的子类
4。NSURLConnection:
负责发送请求,建立client和server的连接。
NSURLConnection的使用步骤
1,创建一个NSURL对象,设置请求路径
// URL里面不能包括中文
NSURL *url = [NSURL URLWithString:urlStr];
2,传入NSURL创建一个NSURLRequest对象。设置请求头和请求体
// 2.2.创建请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //默认就是GET请求
request.timeoutInterval = 5; //设置请求超时
3,使用NSURLConnection发送NSURLRequest
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
NSURLConnection发送请求
1。同步请求
[NSURLConnection sendSynchronousRequest:<#(NSURLRequest *)#> returningResponse:<#(NSURLResponse *__autoreleasing *)#> error:<#(NSError *__autoreleasing *)#>];
2,异步请求
: 依据对server返回数据的处理方式的不同,又能够分为2种
1)block回调:
[NSURLConnection sendAsynchronousRequest:<#(NSURLRequest *)#> queue:<#(NSOperationQueue *)#> completionHandler:<#^(NSURLResponse *response, NSData *data, NSError *connectionError)handler#>];
2)代理:
NSURLConnection *conn1 = [[NSURLConnection alloc] initWithRequest:<#(NSURLRequest *)#> delegate:<#(id)#>];
NSURLConnection *conn1 = [[NSURLConnection alloc] initWithRequest:<#(NSURLRequest *)#> delegate:<#(id)#> startImmediately:<#(BOOL)#>];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
在这样的情况下。须要调用start方法開始发送请求
- (void)start;
成为NSURLConnection的代理,最好遵守NSURLConnectionDataDelegate协议;
POST请求:
1,设置POST请求
request.HTTPMethod = @"POST"; //
设置为POST请求
2,设置请求路径
// 设置请求路径
NSURL *url = [NSURL URLWithString:@"http://192.168.1.200:8080/MJServer/login"];
3。设置请求头
// 通过请求头告诉serverclient的类型
[request setValue:@"ios" forHTTPHeaderField:@"User-Agent"];
4,设置请求体
// 设置请求体
NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", username, pwd];
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
GET和POST请求
1,GET请求在路径后面要加请求參数,POST请求在路径后面不用加请求參数;
2,GET请求不用请求头和请求体,POST请求要请求体(把请求參数转换为请求体),须要设置HTTPMethod和HTTPBody;
注意: url中不能写中文,假设非有中文,就须要转码:
[url stringByAppendingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
JSON:
什么是JSON:
1,json是一种轻量级的数据格式,一般用于数据交互。
2。server返回给client的数据,一般都是JSON格式或者XML格式(文件下载除外)
JSON的格式非常像OC中的字典和数组
{“name” : "jack", "age" : 10}
{"names" : ["jack","rose","jim"]}
标准JSON格式的注意点:key必须用双引號
JSON解析方案:
1。在IOS中,JSON的常见解析方式有4种
第三方框架: JSONKit、 SBJson、 TouchJSON
(性能从左到右,越差);
苹果原生(自带):NSJSONSerialization (性能最好)。
2。NSJSONSerialization的常见方法
JSON数据 -> OC对象
[NSJSONSerialization JSONObjectWithData:<#(NSData *)#> options:<#(NSJSONReadingOptions)#> error:<#(NSError *__autoreleasing *)#>];
OC对象 -> JSON数据
[NSJSONSerialization dataWithJSONObject:<#(id)#> options:<#(NSJSONWritingOptions)#> error:<#(NSError *__autoreleasing *)#>];
网络请求之GET、POST请求的更多相关文章
- Android okHttp网络请求之Get/Post请求
前言: 之前项目中一直使用的Xutils开源框架,从xutils 2.1.5版本使用到最近的xutils 3.0,使用起来也是蛮方便的,只不过最近想着完善一下app中使用的开源框架,由于Xutils里 ...
- Android系列之网络(二)----HTTP请求头与响应头
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- 网络处理1-异步GET请求
前言 云计算 近几年来,云计算是一个非常热门的技术名词,很多专家认为,云计算会改变互联网的技术基础,甚至会影响整个产业的格局.可能还很多人不了解什么是云计算,简单来说,就是把用户的数据(比如文档.照片 ...
- ios网络学习------1get post异步请求
网络请求的步骤: get请求: #pragma mark - 这是私有方法,尽量不要再方法中直接使用属性,由于一般来说属性都是和界面关联的,我们能够通过參数的方式来使用属性 #pragma mark ...
- 二:网络--GET请求和POST请求
一.GET请求和POST请求简单说明 GET - 从指定的服务器中获取数据 POST - 提交数据给指定的服务器处理 GET方法: 使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送 ...
- Android网络框架OkHttp之get请求(源码初识)
概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...
- 反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client,此时的代理server对外就表现为反向代理server。
Nginx安装好之后.開始使用它来简单实现反向代理与负载均衡的功能.在这之前.首先得脑补一下什么是反向代理和负载均衡. 反向代理:是指以代理server来接收Internet上的请求,然后将 ...
- 【网络开发】详谈socket请求Web服务器过程
最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有"连接建立"的发生 ...
- 学习AJAX必知必会(3)~自动重启工具nodemon、缓存问题、请求超时和网络异常、取消重复请求
1.nodemon 自动重启工具(自动重启基于nodejs开发的服务端应用) ■ nodemon 是一个工具,通过在检测到目录中的文件更改时自动重新启动node应用程序来帮助开发node.js. // ...
- 网络处理2-异步POST请求和同步请求
一.异步POST请求 假如请求路径是http://192.168.1.102:8080/MJServer/login,请求参数有2个: username :母鸡 pwd :123 1.POST请求细节 ...
随机推荐
- 《从Paxos到ZooKeeper 分布式一致性原理与实践》阅读【Leader选举】
从3.4.0版本开始,zookeeper废弃了0.1.2这3种Leader选举算法,只保留了TCP版本的FastLeaderElection选举算法. 当ZooKeeper集群中的一台服务器出现以下两 ...
- ES6 学习笔记 - let和const
let 和 const 命令 学习资料:ECMAScript 6 入门 let 所声明的变量,只在let命令所在的代码块内有效.用途:循环计数器. 如果使用var,只有一个全局变量i: var a = ...
- 华硕(ASUS)X554LP笔记本一开机就进入aptio setup utility 问题的解决
某次因大意一直未插电,华硕(ASUS)X554LP笔记本后来没电关机.后来每次一开机就进入aptio setup utility界面,按F9调入默认配置,F10保存后退出,重启仍然进入aptio se ...
- tcpdump命令使用方法
NAME tcpdump - 转储网络上的数据流 总 tcpdump [ -adeflnNOpqStvx ] [ -c count ] [ -F file ] [ -i interface ] [ - ...
- HDU_6016_(Bestcoder round #92 1002)_(dfs)(暴力)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6016 题意:给定男羊和女羊的朋友关系,即给定一个图,问从任意一只羊开始连续数四只不相同的羊的方法数. ...
- redis的安装和使用【2】redis的java操作
修改redis.conf# 配置绑定ip,作者机子为192.168.100.192,请读者根据实际情况设置bind 192.168.100.192#非保护模式protected-mode no保存重启 ...
- 【Linux】centos7 添加脚本到/etc/rc.local文件里,实现开机自启
Linux 设置开机自启动,添加命令到/etc/rc.d/rc.local,本文以设置tomcat自启动为例: 一:添加自启动命令 export JAVA_HOME=/usr/java/jdk1.8. ...
- 26-Ubuntu-文件和目录命令-其他命令-管道
管道 Linux允许将一个命令的输出可以通过管道作为另一个命令的输入. 可以理解为现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里的 | 左右分为两端,左端塞东西(写),右端取东西(读). ...
- HDU多校Round 4
Solved:3 rank:405................................. B. Harvest of Apples 知道了S(n,m) 可以o(1)的求S(n - 1, m ...
- Spring自定义拦截器
HandlerInterceptorAdapter由Spring MVC提供,用来拦截请求. 实现自定义拦截器需要继承HandlerInterceptorAdapter或实现HandlerInterc ...