AFNetworking
什么是AFN
全称是AFNetworking,是对NSURLConnection、NSURLSession的一层封装
虽然运行效率没有ASI高,但是使用比ASI简单
在iOS开发中,使用比较广泛
AFN的github地址
https://github.com/AFNetworking/AFNetworking
AFHTTPRequestOperationManager
是AFN中最重要的对象之一
封装了HTTP请求的常见处理
GET\POST请求
解析服务器的响应数据
创建
<code class="hljs fix has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-attribute" style="box-sizing: border-box;">AFHTTPRequestOperationManager *mgr </span>=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;"> [AFHTTPRequestOperationManager manager];</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
GET\POST请求
<code class="hljs erlang has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">//<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">GET</span>请求 <span class="hljs-pp" style="box-sizing: border-box;">- <span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *)</span>GET:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">NSString</span> *)</span>URLString parameters:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(id)</span>parameters success:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(void (^)</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *operation, id response<span class="hljs-variable" style="box-sizing: border-box;">Object</span>)</span>)success failure:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(void (^)</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *operation, <span class="hljs-variable" style="box-sizing: border-box;">NSError</span> *error)</span>)failure //POST请求 - <span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *)</span>POST:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">NSString</span> *)</span>URLString parameters:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(id)</span>parameters success:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(void (^)</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *operation, id response<span class="hljs-variable" style="box-sizing: border-box;">Object</span>)</span>)success failure:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(void (^)</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *operation, <span class="hljs-variable" style="box-sizing: border-box;">NSError</span> *error)</span>)failure </span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul>
文件上传
<code class="hljs erlang has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-pp" style="box-sizing: border-box;">- <span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *)</span>POST:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">NSString</span> *)</span>URLString parameters:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(id)</span>parameters constructingBodyWithBlock:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(void (^)</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(id <<span class="hljs-variable" style="box-sizing: border-box;">AFMultipartFormData</span>> form<span class="hljs-variable" style="box-sizing: border-box;">Data</span>)</span>)block success:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(void (^)</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *operation, id response<span class="hljs-variable" style="box-sizing: border-box;">Object</span>)</span>)success failure:<span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(void (^)</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(<span class="hljs-variable" style="box-sizing: border-box;">AFHTTPRequestOperation</span> *operation, <span class="hljs-variable" style="box-sizing: border-box;">NSError</span> *error)</span>)failure </span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>
监控联网状态
<code class="hljs bash has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; [manager startMonitoring]; [manager <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">set</span>ReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"%d"</span>, status); }]; </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>
提示:要监控网络连接状态,必须要先调用单例的startMonitoring方法
1.AFHTTPRequestOperationManager
* 对NSURLConnection的封装
2.AFHTTPSessionManager
* 对NSURLSession的封装
对服务器返回数据的解析
<code class="hljs erlang-repl has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>.<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFN</span>可以自动对服务器返回的数据进行解析 * 默认将服务器返回的数据当做<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">JSON</span>来解析 <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>.设置对服务器返回数据的解析方式 <span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">1> </span>当做是<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">JSON</span>来解析(默认做法) * <span class="hljs-function_or_atom" style="box-sizing: border-box;">mgr</span>.<span class="hljs-function_or_atom" style="box-sizing: border-box;">responseSerializer</span> = [<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFJSONResponseSerializer</span> <span class="hljs-function_or_atom" style="box-sizing: border-box;">serializer</span>]; * <span class="hljs-function_or_atom" style="box-sizing: border-box;">responseObject</span>的类型是<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSDictionary</span>或者<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSArray</span> <span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">2> </span>当做是<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">XML</span>来解析 * <span class="hljs-function_or_atom" style="box-sizing: border-box;">mgr</span>.<span class="hljs-function_or_atom" style="box-sizing: border-box;">responseSerializer</span> = [<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFXMLParserResponseSerializer</span> <span class="hljs-function_or_atom" style="box-sizing: border-box;">serializer</span>]; * <span class="hljs-function_or_atom" style="box-sizing: border-box;">responseObject</span>的类型是<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSXMLParser</span> <span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">3> </span>直接返回<span class="hljs-function_or_atom" style="box-sizing: border-box;">data</span> * 意思是:告诉<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFN</span>不要去解析服务器返回的数据,保持原来的<span class="hljs-function_or_atom" style="box-sizing: border-box;">data</span>即可 * <span class="hljs-function_or_atom" style="box-sizing: border-box;">mgr</span>.<span class="hljs-function_or_atom" style="box-sizing: border-box;">responseSerializer</span> = [<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFHTTPResponseSerializer</span> <span class="hljs-function_or_atom" style="box-sizing: border-box;">serializer</span>]; <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>.注意 * 服务器返回的数据一定要跟<span class="hljs-function_or_atom" style="box-sizing: border-box;">responseSerializer</span>对得上 <span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">1> </span>服务器返回的是<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">JSON</span>数据 * <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFJSONResponseSerializer</span> * <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFHTTPResponseSerializer</span> <span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">2> </span>服务器返回的是<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">XML</span>数据 * <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFXMLParserResponseSerializer</span> * <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFHTTPResponseSerializer</span> <span class="hljs-prompt" style="color: rgb(0, 102, 102); box-sizing: border-box;">3> </span>服务器返回的是其他数据 * <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">AFHTTPResponseSerializer</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li></ul>
AFNetworking网络请求实例
<code class="hljs java has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">#<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"AFNetworking.h"</span> <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@implementation</span> ViewController - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)viewDidLoad { [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span> viewDidLoad]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Do any additional setup after loading the view, typically from a nib.</span> } - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [self postJSON]; } - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)getSession { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// AFHTTPSessionManager 对 NSURLSession 的封装</span> AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; [mgr GET:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">""</span> parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) { } failure:^(NSURLSessionDataTask *task, NSError *error) { }]; } <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * 利用AFN发送一个POST请求,服务器返回的JSON数据 */</span> - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)postJSON { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// AFHTTPRequestOperationManager 对 NSURLConnection的封装</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 1.创建一个请求操作管理者</span> AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.请求参数</span> NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"username"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"哈哈哈"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pwd"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"123"</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 3.发送一个GET请求</span> NSString *url = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://localhost:8080/MJServer/login"</span>; [mgr POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 请求成功的时候调用这个block</span> NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请求成功---%@"</span>, responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 请求失败的时候调用调用这个block</span> NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请求失败"</span>); }]; } <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * 利用AFN发送一个GET请求,服务器返回的JSON数据,让AFN直接返回data */</span> - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)getData { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 1.创建一个请求操作管理者</span> AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 声明:不要对服务器返回的数据进行解析,直接返回data即可</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 如果是文件下载,肯定是用这个</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// responseObject的类型是NSData</span> mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.请求参数</span> NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"username"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"哈哈哈"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pwd"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"123"</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 3.发送一个GET请求</span> NSString *url = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://localhost:8080/MJServer/login"</span>; [mgr GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 请求成功的时候调用这个block</span> NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil]; NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"%@"</span>, dict); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 请求失败的时候调用调用这个block</span> NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请求失败"</span>); }]; } <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * 利用AFN发送一个GET请求,服务器返回的XML数据 */</span> - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)getXML { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 1.创建一个请求操作管理者</span> AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 声明:等会服务器返回的是XML数据</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// responseObject的类型是NSXMLParser</span> mgr.responseSerializer = [AFXMLParserResponseSerializer serializer]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.请求参数</span> NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"username"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"哈哈哈"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pwd"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"123"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"type"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"XML"</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 3.发送一个GET请求</span> NSString *url = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://localhost:8080/MJServer/login"</span>; [mgr GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 请求成功的时候调用这个block</span> NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请求成功--%@"</span>, responseObject); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// responseObject.delegate = self;</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// [responseObject parse];</span> } failure:^(AFHTTPRequestOperation *operation, NSError *error) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 请求失败的时候调用调用这个block</span> NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请求失败"</span>); }]; } <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * 利用AFN发送一个GET请求,服务器返回的JSON数据 */</span> - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)getJSON { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 1.创建一个请求操作管理者</span> AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 声明一下:服务器返回的是JSON数据</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// mgr.responseSerializer = [AFJSONResponseSerializer serializer];</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// responseObject的类型是NSDictionary或者NSArray</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.请求参数</span> NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"username"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"哈哈哈"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pwd"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"123"</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 3.发送一个GET请求</span> NSString *url = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://localhost:8080/Server/login"</span>; [mgr GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 请求成功的时候调用这个block</span> NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请求成功---%@"</span>, responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 请求失败的时候调用调用这个block</span> NSLog(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请求失败"</span>); }]; } <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@end</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li><li style="box-sizing: border-box; padding: 0px 5px;">89</li><li style="box-sizing: border-box; padding: 0px 5px;">90</li><li style="box-sizing: border-box; padding: 0px 5px;">91</li><li style="box-sizing: border-box; padding: 0px 5px;">92</li><li style="box-sizing: border-box; padding: 0px 5px;">93</li><li style="box-sizing: border-box; padding: 0px 5px;">94</li><li style="box-sizing: border-box; padding: 0px 5px;">95</li><li style="box-sizing: border-box; padding: 0px 5px;">96</li><li style="box-sizing: border-box; padding: 0px 5px;">97</li><li style="box-sizing: border-box; padding: 0px 5px;">98</li><li style="box-sizing: border-box; padding: 0px 5px;">99</li><li style="box-sizing: border-box; padding: 0px 5px;">100</li><li style="box-sizing: border-box; padding: 0px 5px;">101</li><li style="box-sizing: border-box; padding: 0px 5px;">102</li><li style="box-sizing: border-box; padding: 0px 5px;">103</li><li style="box-sizing: border-box; padding: 0px 5px;">104</li><li style="box-sizing: border-box; padding: 0px 5px;">105</li><li style="box-sizing: border-box; padding: 0px 5px;">106</li><li style="box-sizing: border-box; padding: 0px 5px;">107</li><li style="box-sizing: border-box; padding: 0px 5px;">108</li><li style="box-sizing: border-box; padding: 0px 5px;">109</li><li style="box-sizing: border-box; padding: 0px 5px;">110</li><li style="box-sizing: border-box; padding: 0px 5px;">111</li><li style="box-sizing: border-box; padding: 0px 5px;">112</li><li style="box-sizing: border-box; padding: 0px 5px;">113</li><li style="box-sizing: border-box; padding: 0px 5px;">114</li><li style="box-sizing: border-box; padding: 0px 5px;">115</li><li style="box-sizing: border-box; padding: 0px 5px;">116</li><li style="box-sizing: border-box; padding: 0px 5px;">117</li><li style="box-sizing: border-box; padding: 0px 5px;">118</li><li style="box-sizing: border-box; padding: 0px 5px;">119</li><li style="box-sizing: border-box; padding: 0px 5px;">120</li><li style="box-sizing: border-box; padding: 0px 5px;">121</li><li style="box-sizing: border-box; padding: 0px 5px;">122</li><li style="box-sizing: border-box; padding: 0px 5px;">123</li><li style="box-sizing: border-box; padding: 0px 5px;">124</li><li style="box-sizing: border-box; padding: 0px 5px;">125</li><li style="box-sizing: border-box; padding: 0px 5px;">126</li><li style="box-sizing: border-box; padding: 0px 5px;">127</li><li style="box-sizing: border-box; padding: 0px 5px;">128</li><li style="box-sizing: border-box; padding: 0px 5px;">129</li><li style="box-sizing: border-box; padding: 0px 5px;">130</li><li style="box-sizing: border-box; padding: 0px 5px;">131</li><li style="box-sizing: border-box; padding: 0px 5px;">132</li><li style="box-sizing: border-box; padding: 0px 5px;">133</li><li style="box-sizing: border-box; padding: 0px 5px;">134</li><li style="box-sizing: border-box; padding: 0px 5px;">135</li><li style="box-sizing: border-box; padding: 0px 5px;">136</li><li style="box-sizing: border-box; padding: 0px 5px;">137</li><li style="box-sizing: border-box; padding: 0px 5px;">138</li><li style="box-sizing: border-box; padding: 0px 5px;">139</li><li style="box-sizing: border-box; padding: 0px 5px;">140</li><li style="box-sizing: border-box; padding: 0px 5px;">141</li><li style="box-sizing: border-box; padding: 0px 5px;">142</li><li style="box-sizing: border-box; padding: 0px 5px;">143</li><li style="box-sizing: border-box; padding: 0px 5px;">144</li></ul>
AFNetworking文件上传实例
<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#import <span class="hljs-title" style="box-sizing: border-box;">"AFNetworking.h"</span></span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@interface</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ViewController</span> () <<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">UINavigationControllerDelegate</span>, <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">UIImagePickerControllerDelegate</span>,<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">UIActionSheetDelegate</span>></span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@property</span> (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">weak</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">nonatomic</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IBOutlet</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span> *imageView; - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IBAction</span>)upload; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@end</span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@implementation</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ViewController</span></span> - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)viewDidLoad { [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span> viewDidLoad]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Do any additional setup after loading the view, typically from a nib.</span> } - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请选择图片"</span> delegate:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span> cancelButtonTitle:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"取消"</span> destructiveButtonTitle:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span> otherButtonTitles:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"拍照"</span>, @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"相册"</span>, <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>]; [sheet showInView:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.view</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.window</span>]; } <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#pragma mark - UIActionSheet</span> - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSInteger</span>)buttonIndex { UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 设置代理</span> ipc<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.delegate</span> = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">switch</span> (buttonIndex) { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>: { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 拍照</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>; ipc<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.sourceType</span> = UIImagePickerControllerSourceTypeCamera; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>; } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>: { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 相册</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>; ipc<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.sourceType</span> = UIImagePickerControllerSourceTypePhotoLibrary; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>; } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">default</span>: <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>; } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 显示控制器</span> [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span> presentViewController:ipc animated:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span> completion:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>]; } <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#pragma mark - UIImagePickerControllerDelegate</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * 在选择完图片后调用 * * @param info 里面包含了图片信息 */</span> - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSDictionary</span> *)info { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 销毁控制器</span> [picker dismissViewControllerAnimated:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span> completion:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 获得图片</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImage</span> *image = info[UIImagePickerControllerOriginalImage]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 显示图片</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.imageView</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.image</span> = image; } - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)upload1 { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 1.创建一个管理者</span> AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.封装参数(这个字典只能放非文件参数)</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableDictionary</span> *params = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableDictionary</span> dictionary]; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"username"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"123"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"age"</span>] = @<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pwd"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"456"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"height"</span>] = @<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.55</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.发送一个请求</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *url = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://localhost:8080/MJServer/upload"</span>; [mgr POST:url parameters:params constructingBodyWithBlock:^(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span><AFMultipartFormData> formData) { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 在发送请求之前会自动调用这个block</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 需要在这个block中添加文件参数到formData中</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** FileURL : 需要上传的文件的URL路径 name : 服务器那边接收文件用的参数名 fileName : (告诉服务器)所上传文件的文件名 mimeType : 所上传文件的文件类型 */</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSURL</span> *url = [[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSBundle</span> mainBundle] URLForResource:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"itcast"</span> withExtension:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"txt"</span>]; [formData appendPartWithFileURL:url name:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"file"</span> fileName:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"test.txt"</span> mimeType:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"text/plain"</span> error:<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** FileData : 需要上传的文件的具体数据 name : 服务器那边接收文件用的参数名 fileName : (告诉服务器)所上传文件的文件名 mimeType : 所上传文件的文件类型 */</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// UIImage *image = [UIImage imageNamed:@"minion_01"];</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// NSData *fileData = UIImagePNGRepresentation(image);</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// [formData appendPartWithFileData:fileData name:@"file" fileName:@"haha.png" mimeType:@"image/png"];</span> } success:^(AFHTTPRequestOperation *operation, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span> responseObject) { <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSLog</span>(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"上传成功"</span>); } failure:^(AFHTTPRequestOperation *operation, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSError</span> *error) { <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSLog</span>(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"上传失败"</span>); }]; } - (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">IBAction</span>)upload { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.imageView</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.image</span> == <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 1.创建一个管理者</span> AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.封装参数(这个字典只能放非文件参数)</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableDictionary</span> *params = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSMutableDictionary</span> dictionary]; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"username"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"123"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"age"</span>] = @<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pwd"</span>] = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"456"</span>; params[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"height"</span>] = @<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.55</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2.发送一个请求</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *url = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://192.168.15.172:8080/Server/upload"</span>; [mgr POST:url parameters:params constructingBodyWithBlock:^(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span><AFMultipartFormData> formData) { NSData *fileData = UIImageJPEGRepresentation(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.imageView</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.image</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>); [formData appendPartWithFileData:fileData name:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"file"</span> fileName:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"haha.jpg"</span> mimeType:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"image/jpeg"</span>]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 不是用这个方法来设置文件参数</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// [formData appendPartWithFormData:fileData name:@"file"];</span> } success:^(AFHTTPRequestOperation *operation, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span> responseObject) { <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSLog</span>(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"上传成功"</span>); } failure:^(AFHTTPRequestOperation *operation, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSError</span> *error) { <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSLog</span>(@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"上传失败"</span>); }]; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 文件下载,文件比较大,断点续传技术:普遍所有的HTTP服务器都支持</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 文件上传,文件比较大,断点续传技术:一般的HTTP服务器都不支持,常用的技术用的是Socket(TCP\IP、UDP)</span> } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@end</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li><li style="box-sizing: border-box; padding: 0px 5px;">89</li><li style="box-sizing: border-box; padding: 0px 5px;">90</li><li style="box-sizing: border-box; padding: 0px 5px;">91</li><li style="box-sizing: border-box; padding: 0px 5px;">92</li><li style="box-sizing: border-box; padding: 0px 5px;">93</li><li style="box-sizing: border-box; padding: 0px 5px;">94</li><li style="box-sizing: border-box; padding: 0px 5px;">95</li><li style="box-sizing: border-box; padding: 0px 5px;">96</li><li style="box-sizing: border-box; padding: 0px 5px;">97</li><li style="box-sizing: border-box; padding: 0px 5px;">98</li><li style="box-sizing: border-box; padding: 0px 5px;">99</li><li style="box-sizing: border-box; padding: 0px 5px;">100</li><li style="box-sizing: border-box; padding: 0px 5px;">101</li><li style="box-sizing: border-box; padding: 0px 5px;">102</li><li style="box-sizing: border-box; padding: 0px 5px;">103</li><li style="box-sizing: border-box; padding: 0px 5px;">104</li><li style="box-sizing: border-box; padding: 0px 5px;">105</li><li style="box-sizing: border-box; padding: 0px 5px;">106</li><li style="box-sizing: border-box; padding: 0px 5px;">107</li><li style="box-sizing: border-box; padding: 0px 5px;">108</li><li style="box-sizing: border-box; padding: 0px 5px;">109</li><li style="box-sizing: border-box; padding: 0px 5px;">110</li><li style="box-sizing: border-box; padding: 0px 5px;">111</li><li style="box-sizing: border-box; padding: 0px 5px;">112</li><li style="box-sizing: border-box; padding: 0px 5px;">113</li><li style="box-sizing: border-box; padding: 0px 5px;">114</li><li style="box-sizing: border-box; padding: 0px 5px;">115</li><li style="box-sizing: border-box; padding: 0px 5px;">116</li><li style="box-sizing: border-box; padding: 0px 5px;">117</li><li style="box-sizing: border-box; padding: 0px 5px;">118</li><li style="box-sizing: border-box; padding: 0px 5px;">119</li><li style="box-sizing: border-box; padding: 0px 5px;">120</li><li style="box-sizing: border-box; padding: 0px 5px;">121</li><li style="box-sizing: border-box; padding: 0px 5px;">122</li><li style="box-sizing: border-box; padding: 0px 5px;">123</li><li style="box-sizing: border-box; padding: 0px 5px;">124</li><li style="box-sizing: border-box; padding: 0px 5px;">125</li><li style="box-sizing: border-box; padding: 0px 5px;">126</li><li style="box-sizing: border-box; padding: 0px 5px;">127</li><li style="box-sizing: border-box; padding: 0px 5px;">128</li><li style="box-sizing: border-box; padding: 0px 5px;">129</li><li style="box-sizing: border-box; padding: 0px 5px;">130</li><li style="box-sizing: border-box; padding: 0px 5px;">131</li><li style="box-sizing: border-box; padding: 0px 5px;">132</li><li style="box-sizing: border-box; padding: 0px 5px;">133</li><li style="box-sizing: border-box; padding: 0px 5px;">134</li><li style="box-sizing: border-box; padding: 0px 5px;">135</li><li style="box-sizing: border-box; padding: 0px 5px;">136</li><li style="box-sizing: border-box; padding: 0px 5px;">137</li><li style="box-sizing: border-box; padding: 0px 5px;">138</li><li style="box-sizing: border-box; padding: 0px 5px;">139</li></ul>