文档章节

HTTP、SDK及网络数据请求

W
 Who_Care_Who
发布于 2015/05/05 21:24
字数 1076
阅读 72
收藏 0
1.http简介
  
  http : 超文本传输协议(HTTP, HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议,所有的WWW文
  
  件都必须遵守这个协议,设计HTTP的最初目的是为了提供发布和接受HTML页面的方法。
  
  HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网
  
  络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。

  HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议
  
  。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部
  
  分,以及哪部分内容首先显示(如文本先于图形)等。

2.sdk简介
 
  软件开发工具包(SDK Software development kit) 一般都是一些被软件工程师用于为特定的软件包、软件框架、硬件平
  
  台、操作系统等建立应用软件的开发工具的集合。
  
  API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,应用程
  
  序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。
  
3. 网络数据请求(GET)

  3.1.同步get
  
  //首先将网址初始化一个可以识别的oc的字符串
  NSString *urlStr = [NSString stringWithFormat:];
  
  //如果网址中存在中文的话,要进行URLENcode
  NSString *newStr = [urlStr stringByAddingPercentEscapesUsingEncode:NSUTF8SreingEncoding]
  
  //构建网络URL对象
  NSURL *url = [NSURL URLWithString:newStr];
  
  //创建网络请求
  NSURLRequest *request = [NSURLRequest requestWithURL:url];
  
  //创立连接
  NSURLResponse *response = nil;
 
  NSError *error = nil;
  
  NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&
   
  error];

  //解析得到的数据
  NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragment
  
  s error:nil];
  
  3.2.异步get
  
  //创建URL
  NSURL *url = [NSURL URLWithString:@"http://172.16.12.183/index.php"];
  
  //创建请求对象
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

  //解析数据(BLock)
   [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
      NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

4. 网络数据请求(POST)

  4.1.同步post
  
  //创建URL
  NSURL *url = [NSURL URLWithString:@""];
  
  //准备请求对象
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
  
  [request setHTTPMethod:@"POST"];
  
  //3.准备参数
    NSString *param = [NSString stringWithFormat:@"userName=%@&password=%@",self.UserName.text,self.P
    assWard.text];
   
   //将参数转为NSData
    NSData *paramData = [param dataUsingEncoding:NSUTF8StringEncoding];
   
    [request setHTTPBody:paramData];
    //创立连接
    NSData *data = [NSURLConnection sendSynchronsRequest:request returningResponse:nil error:nil];
    
    //解析数据
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragme
    nts error:nil];
  
  4.2 异步post
  
    //1.创建URL
    NSURL *url = [NSURL URLWithString:@"http://172.16.12.183/index.php"];
    
    //2.准备请求对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    
    //3.准备参数
    NSString *param = [NSString stringWithFormat:@"userName=%@&password=%@",self.UserName.text,self.PassWard.text];
    //将参数转为NSData
    NSData *paramData = [param dataUsingEncoding:NSUTF8StringEncoding];
    
    [request setHTTPBody:paramData];
    
    //建立连接
     NSURLConnection *connection = [NSURLConnection  connectionWithRequest:request delegate:self];//    协议要写上
    //4.启动连接
    [connection start];
    
   //代理协议的方法
   //已经收到响应
   - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
   {
    _receiveData = [NSMutableData data];
    }
   //开始接受数据
   - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
    //多次执行
    [_receiveData appendData:data];//拼接数据
    }
   //结束接受数据
    - (void)connectionDidFinishLoading:(NSURLConnection*)connection
   {
    //解析
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:_receiveData options:NSJSONReadingAll    owFragments error:nil];
    NSLog(@"%@",dic);
   }
   //方式错误
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    
}
  
5. GET和POST的区别:

   1. GET请求的接口会包含参数部分,参数作为网址的一部分,服务器地址与参数之间通过?来间隔,POST会将服务器地址
   
   与参数进行分开,请求接口中只有服务器地址,而参数会作为请求的一部分,提交后台服务器
   
   2. GET请求参数会出现在接口中,不安全,而POST请求相对安全
   
   3.虽然GET和POST请求都可以请求和提交数据,但是一般的GET多用于从后台请求数据,POST多用于向后台提交数据。
   
6. 同步和异步的区别:

   1. 同步连接:主线程去请求数据,当数据请求完毕之前,其他线程一律不响应,会造成程序假死现象。
   
   2. 异步连接:会单独开一个线程去处理网络请求中的数据,主线程依然处于交互状态,程序运行流畅。


© 著作权归作者所有

上一篇: KVO
下一篇: 数据解析(JSON)
W
粉丝 1
博文 69
码字总数 28284
作品 0
海淀
私信 提问
魔窗研发副总裁沈哲:移动端SDK的优化之路

作者简介: 沈哲,擅长移动端、互联网后端技术,曾经在安硕信息、decarta(已被uber收购)、京东商城等国内外知名软件公司、互联网公司工作。开发过decarta第一款地图导航app,今夜酒店特价a...

魔窗MW
2016/05/16
0
0
iOS-初识网络(一)

iOS中的网络请求可以从如下的类中体现: NSURL: NSURLRequest: NSURLConnection: NSURLResponse: NSURLSession: iOS9+ 1:网络的url决定着和谁通信: url格式 2:怎么通信:多个客户端用不同...

Nlinger
2017/12/06
0
0
Android-IM使用Retrofit获取好友在线状态

前段时间用JMessage开发了一款即时通讯软件。 但是有些遗憾的是,sdk并没有提供用户在线状态判断的方法。 只能送其它地方入手,去看了其它文档发现虽然sdk上没有可以直接调用的方法,但是提供...

八怪不姓丑
2017/09/27
0
0
iOS 网络调试库--NetworkEye

NetworkEye是一个网络调试库,可以监控App内所有HTTP请求并显示请求相关的所有信息,方便App开发的网络调试。 可以检测到包括网页,NSURLConnecttion,NSURLSession,AFNetworking,第三方库,...

flyicarus
2015/11/06
1K
0
取代 FlashP2P,H5P2P 将成为 WebP2P 主流

5 月 19、20 日,行业精英齐聚的 WebRTCon 2018 在上海举办。又拍云 PrismCDN 项目负责人凌建发在大会做了《又拍云低延时的 WebP2P 直播实践》的精彩分享。 分享介绍了 WebP2P 行业将从 Flas...

又拍云
2018/06/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

DevOps是如何实现效率的提升?

随着企业业务对软件系统日益依赖,IT管理与研发模式也随之对“敏态”模式产生了需求,也就是今天时常提起的DevOps。提升效率,是DevOps实践的核心内容之一。就让我们来一起从软件生命周期的业...

嘉为科技
28分钟前
3
0
总结:linux目录之proc

我们系统大部分的基础数据采集,其实就是读取proc目录下的文件,并解析获取数据的过程。 1、如cpu利用率:直接cat /proc/cpuinfo命令,然后获取输出内容,并解析里面的数据,如cpu核数等; ...

浮躁的码农
30分钟前
3
0
比原Bapp红包应用

喜迎国庆期间,比原链在自己的移动端钱包Bycoin(下载地址)和google插件钱byone中推出了红包应用,在国庆期间深受大家好评。 那我们今天就来大概介绍一下比原红包,以及基于比原链开发dapp应用...

比原链Bytom
31分钟前
3
0
Linux中没有rc.local文件的解决方法

Linux中没有rc.local文件的解决方法是什么呢?这应该是很多工程师比较头疼的问题,下面就给大家例举几个解决办法。 比较新的Linux发行版已经没有rc.local文件了。因为已经将其服务化了。 解决...

xiangyunyan
31分钟前
2
0
数据中台在阿里巴巴集团内部的实践情况

作者:品鉴 数据中台门在阿里巴巴集团干什么的,由哪个部门掌管?数据中台在阿里巴巴的主要作用是什么呢?外面吹嘘这么神秘的数据中台在阿里实践的如何呢?今天小编正好要采访数据技术及产品...

阿里云官方博客
31分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部