HTTP、SDK及网络数据请求

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. 异步连接:会单独开一个线程去处理网络请求中的数据,主线程依然处于交互状态,程序运行流畅。


你可能感兴趣的:(HTTP、SDK及网络数据请求)