网络协议的使用



#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController

/**

 *  

 http是一个超文本传输协议(Hyper Text Tansfer Protocol)所有www文件都必须遵守这个协议标准

 

 http 是万维网浏览传输数据的一个协议;访问的是远程网络资源,格式是http//服务器地址 资源地址 http//www.baidu.com/user/info

 

 IP协议对应网络层;TCP对应传输层;HTTP对应应用层

 

 http协议的作用:

 01.规定客户端和服务器之间的数据传输格式

 02.让客户端和服务器能有效的进行数据沟通

 

 使用HTTP协议的好处:

 01.简单快速,因为HTTP协议简单,所以http服务器的程序规模小,因而通信速度快

 02.灵活,HTTP允许传输任意类型的数据

 03.HTTP是非持续连接,限制每次连接只处理一个请求,服务器对客服端的请求做出相应后,马上断开连接,这种方式节省传输时间

 

 HTTP的通信过程:

 01.请求 客服端向服务器索求数据

 02.响应 服务器返回客服端相应的数据

 

 

 

 ***********************

 HTTP的请求方式:get post 

 

 get 会把请求的内容放到请求的连接上(拼接到链接地址里面)(数据请求的时候 默认是get

     如:www.baidu.com/user/login?username=流水,psw=123

 get的特征:

 01.浏览器和服务器对URL有长度限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB

 02.会把请求的数据暴露在接口里面

 

 post 参数全部放在请求体中,这样就保证数据安全,没有具体的长度限制(唯一的限制就是服务器的承受能力)

 

 GETPOST使用情况:

 01.如果需要传输大量数据,比如文件上传,只能用POST请求

 02.GET的安全性比POST 如果包含机密、敏感信息建议用POST请求

 03.如果是增删改数据,建议用POST

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

 

 URLUniform Resource Locator(统一资源定位符)通过1URL,能找到互联网上唯一的1个资源地址

 

 psw:密码 md5(密码)加密

 

 **********************

 网络请求: 同步请求 异步请求

      01. 同步请求 等所有操作完全执行完毕,才会继续执行;特征:会遇到假死的情况,只要请求的操作没有执行完毕就不会再去响应任何事件(在同一线程)

      02. 异步请求 在程序运行的时候,会利用空闲的时间去执行里面的操作 不会影响到同一线程里面的其他操作

 

 

 */

- (void)viewDidLoad {

    [super viewDidLoad];

//    [self loadData1];

//    [self loadData2];

//    [self loadData3];

//      [self loadData4];

    

//      [self loadData5];

    [self loadData6];

    

    

}




//通过URl 获得URL里面的内容(字符串)

- (void)loadData1

{

    //把字符串转化成 NSURL

    NSURL *url = [NSURL URLWithString:@"http://192.168.1.126:8080/cms4/login/doLogin.action"];

    NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"%@",content);

    

}



//通过URl 获得URL里面的data

- (void)loadData2

{

    NSURL *url = [NSURL URLWithString:@"http://preview.quanjing.com/is_rm001/is0997q92.jpg"];

    NSData *data = [NSData dataWithContentsOfURL:url];

    UIImageView *imageView= [[UIImageView alloc]initWithFrame:self.view.frame];

    imageView.contentMode = UIViewContentModeScaleAspectFill;

    imageView.image = [UIImage imageWithData :data];

    [self.view addSubview:imageView];

}


//同步请求

- (void)loadData3

{

    NSURL *url = [NSURL URLWithString:@"http://preview.quanjing.com/is_rm001/is0997q92.jpg"];

    

    //实例化一个请求对象 里面携带请求地址

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    

    //data 是服务器返回的数据 NSURLConnection是发送请求的类

   NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    UIImageView *imageView= [[UIImageView alloc]initWithFrame:self.view.frame];

    imageView.contentMode = UIViewContentModeScaleAspectFill;

    imageView.image = [UIImage imageWithData :data];

    [self.view addSubview:imageView];

}


//异步请求

- (void)loadData4

{

    UIImageView *imageView= [[UIImageView alloc]initWithFrame:self.view.frame];

    imageView.contentMode = UIViewContentModeScaleAspectFill;

       [self.view addSubview:imageView];

    NSURL *url = [NSURL URLWithString:@"http://preview.quanjing.com/is_rm001/is0997q92.jpg"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    

    //需要通过链接 异步发送 请求

    //线程

    NSOperationQueue *queue = [[NSOperationQueue alloc]init];

    

    //发送一个异步请求 在这个线程里面去执行

    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

       

        //response 服务器回应的内容(回应状态的code以及errordata 回应给客户端需要的数据

        

        NSLog(@"%@",response);

        imageView.image = [UIImage imageWithData :data];


    }];

}



//get 把传输的数据放在链接地址里面

- (void)loadData5

{

    NSString *interfaceString = @"http://apis.baidu.com/showapi_open_bus/mobile/find";

    NSString *requestContentString = @"num=18786084133";

    

    NSString *uselString = [NSString stringWithFormat:@"%@?%@",interfaceString,requestContentString];

    //把链接地址的字符窜 转化成NSUTF8StringEncoding

    NSURL *url = [NSURL URLWithString:[uselString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    

    //可变请求 可以添加请求方式以及请求的 请求头或者更多

    //(NSTimeInterval)请求需要的时间 超过时间 就不在请求 cachePolicy缓存方式

    NSMutableURLRequest  *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    //指定http的请求方式

    request.HTTPMethod = @"GET";

    NSString *apiKey = @"e7f5ac9e7c42a6c8cb125ee1d7e8779e";

    

    //apiKey 发送给服务器指定的请求头 位置;forHTTPHeaderField需要的KEY 是服务器指定的key

    [request addValue:apiKey forHTTPHeaderField:@"apikey"];

    

    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        NSLog(@"%@",response);

        

        

//     解析json文件

//     data转换成json文件

      NSDictionary *info  = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

      NSLog(@"%@ %@ %@",info[@"showapi_res_body"][@"city"],info[@"showapi_res_body"][@"name"],info[@"showapi_res_body"][@"num"]);

        

    }];

}



//post请求

- (void)loadData6

{

    NSURL *url = [NSURL URLWithString:@"http://www.weihuok.com/customer2/GetService"];

    

    //请求的参数 PlatformType设备型号

    NSDictionary *dic = @{@"PlatformType":@"3"};

    

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    

    //设置HTTP的请求方式

    request.HTTPMethod = @"POST";

    

    //设置请求的参数

    //dataUsingEncoding把字符串转换成data

    //HTTPBody要的是data数据

    request.HTTPBody = [[NSString stringWithFormat:@"%@",dic]dataUsingEncoding:NSUTF8StringEncoding];

    

    //发送请求

    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        

       NSDictionary *info = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments  error:nil];

        NSLog(@"%@",info);

        

    }];


}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值