网络请求-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请求的更多相关文章

  1. Android okHttp网络请求之Get/Post请求

    前言: 之前项目中一直使用的Xutils开源框架,从xutils 2.1.5版本使用到最近的xutils 3.0,使用起来也是蛮方便的,只不过最近想着完善一下app中使用的开源框架,由于Xutils里 ...

  2. Android系列之网络(二)----HTTP请求头与响应头

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. 网络处理1-异步GET请求

    前言 云计算 近几年来,云计算是一个非常热门的技术名词,很多专家认为,云计算会改变互联网的技术基础,甚至会影响整个产业的格局.可能还很多人不了解什么是云计算,简单来说,就是把用户的数据(比如文档.照片 ...

  4. ios网络学习------1get post异步请求

    网络请求的步骤: get请求: #pragma mark - 这是私有方法,尽量不要再方法中直接使用属性,由于一般来说属性都是和界面关联的,我们能够通过參数的方式来使用属性 #pragma mark ...

  5. 二:网络--GET请求和POST请求

    一.GET请求和POST请求简单说明 GET - 从指定的服务器中获取数据 POST - 提交数据给指定的服务器处理 GET方法: 使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送 ...

  6. Android网络框架OkHttp之get请求(源码初识)

    概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...

  7. 反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client,此时的代理server对外就表现为反向代理server。

       Nginx安装好之后.開始使用它来简单实现反向代理与负载均衡的功能.在这之前.首先得脑补一下什么是反向代理和负载均衡.   反向代理:是指以代理server来接收Internet上的请求,然后将 ...

  8. 【网络开发】详谈socket请求Web服务器过程

    最开始我们需要明白一件事情,因为这是这篇文章的前提: HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的.因此,浏览器访问Web服务器的过程必须先有"连接建立"的发生 ...

  9. 学习AJAX必知必会(3)~自动重启工具nodemon、缓存问题、请求超时和网络异常、取消重复请求

    1.nodemon 自动重启工具(自动重启基于nodejs开发的服务端应用) ■ nodemon 是一个工具,通过在检测到目录中的文件更改时自动重新启动node应用程序来帮助开发node.js. // ...

  10. 网络处理2-异步POST请求和同步请求

    一.异步POST请求 假如请求路径是http://192.168.1.102:8080/MJServer/login,请求参数有2个: username :母鸡 pwd :123 1.POST请求细节 ...

随机推荐

  1. MSSQLServer知识点总结:DDL(create,alter,drop,declare)-未完整

    一.开发环境 Window10 二.开发工具 SQLServer2012 三.数据库的操作 1.创建 (1)方式一:使用默认的配置信息 create database T_mydb2 (2)方式二:自 ...

  2. eclipse安装提示错误:Failed to load JNI shared library "D:\jdk1.7\client\jvm.dll"

    错误截图如下 原因是jdk32位,eclipse64位导致,修改jdk版本为64位或者修改ecipse版本为32位即可.

  3. PHP开发心得一

    1,php获得服务器时间 $time= date('Y-m-d H:i'); echo $time; 一般写法如上,但发现打印出来的时间小时数总数不对,和机器的时间差几个小时.查资料发现,要设定时区. ...

  4. Angular——MVC模式开发实战

    创建项目 创建工作目录 使用bower下载需要插件 git init.add.commit之后得到分支master,再创建developer分支,然后再此分支上进行具体功能开发 MVC架构 之前小项目 ...

  5. 扩增子分析QIIME2-2数据导入Importing data

    # 激活工作环境 source activate qiime2-2017.8 # 建立工作目录 mkdir -p qiime2-importing-tutorial cd qiime2-importi ...

  6. Vue指令2:v-bind

    v-bind 指令可以更新 HTML 属性: <a v-bind:href="url">...</a> 在这里 href 是参数,告知 v-bind 指令将 ...

  7. 折线分割平面(hdoj 2050,动态规划递推)

    Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面 ...

  8. 骑士游历 - dp

    题目地址:http://www.51cpc.com/web/problem.php?id=1586 Summarize: 1. 题目坐标系所给 x,y与惯用表示横纵坐标相反 2. 搜索超时,使用动规: ...

  9. [luogu3573 POI2014] RAJ-Rally (拓扑排序 权值线段树)

    传送门 Solution 在DAG中我们可以\(O(n)\)预处理\(Ds(u)\)表示从u表示以s为起点的最长路\(Dt(u)\)表示以u为终点的最长路,那么经过\((u,v)\)的最长路即为\(D ...

  10. java用递归输出目录结构

    package com.janson.day20180827; import java.io.File; public class TestTreeStructureDirectory { publi ...