zoukankan      html  css  js  c++  java
  • iOS之网络编程

    发送HTTP请求的方法

    在HTTP/1.1协议中,定义了8种发送http请求的方法

    GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH

    根据HTTP协议的设计初衷,不同的方法对资源有不同的操作方式

    PUT :增

    DELETE :删

    POST:改

    GET:查

    最常用的是GET和POST(实际上GET和POST都能办到增删改查)

    HTTP的通信过程
    1.请求
    1> 请求行 : 请求方法、请求路径、HTTP协议的版本

    GET /6ONWsjip0QIZ8tyhnq/ps_default.gif?_t=1445499255720 HTTP/1.1

    2> 请求头 : 客户端的一些描述信息
    * User-Agent : 客户端的环境(软件环境)

    User-Agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:41.0) Gecko/20100101 Firefox/41.0

    3> 请求体 : POST请求才有这个东西
    * 请求参数,发给服务器的数据

    2.响应
    1> 状态行(响应行): HTTP协议的版本、响应状态码、响应状态描述

    HTTP/1.1 200 OK

    2> 响应头:服务器的一些描述信息
    * Content-Type : 服务器返回给客户端的内容类型
    * Content-Length : 服务器返回给客户端的内容的长度(比如文件的大小)

    3> 实体内容(响应体)
    * 服务器返回给客户端具体的数据,比如文件数据

    选择GET和POST的建议

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

    GET的安全性比POST要差些,如果包含机密敏感信息,建议用POST

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

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

    如何发送一个POST请求

     1 // 1.创建一个URL : 请求路径
     2 NSURL *url = [NSURL URLWithString:@"http://localhost:8080/test/login"];
     3 
     4 // 2.创建一个请求
     5 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
     6 // 设置请求方法
     7 request.HTTPMethod = @"POST";
     8 // 设置请求体 : 请求参数
     9 NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", usernameText, pwdText];
    10 // NSString --> NSData
    11 request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];

    URL转码

    1.URL中不能包含中文,得对中文进行转码(加上%)
    NSString *urlStr = [NSString stringWithFormat:@"http://localhost/login?username=喝喝&pwd=222"];
    urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    // urlStr == @"http://localhost/login?username=%E5%96%9D%E5%96%9D&pwd=222"

    NSURLConnection发送请求

    同步请求

    + (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;

    异步请求:根据对服务器返回数据的处理方式的不同,又可以分为2种

    block回调

    + (void)sendAsynchronousRequest:(NSURLRequest*) request                          queue:(NSOperationQueue*) queue                                                  completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;

    NSMutableURLRequest的常用方法
    1.设置超时
    request.timeoutInterval = 5;

    iOS中发送HTTP请求的方案

    苹果原生(自带)

    NSURLConnection:用法简单,最经典最直接的一种方案

    NSURLSession:iOS 7新出的技术,功能比NSURLConnection更加强大

    CFNetwork:NSURL*的底层,纯C语言

    第三方框架

    ASIHttpRequest:外号“HTTP终结者”,功能极其强大,已停止更新

    AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多

    MKNetworkKit:简单易用,维护和使用者少

  • 相关阅读:
    在线网络考试系统源码
    zabbix通过api 批量自动添加主机
    python 连接数据库 区分线上和测试环境
    python 获取本机ip win or linux
    redis常用参数以及redis内存淘汰机制
    nginx常用配置
    Linux基础命令(之一)详解
    linux系统重要子目录介绍
    Linux系统根目录结构介绍
    Linux 基础优化配置
  • 原文地址:https://www.cnblogs.com/H7N9/p/4900642.html
Copyright © 2011-2022 走看看