欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS网络请求中常见的几种方式

程序员文章站 2022-08-28 20:26:55
iOS网络请求中常见的几种方式。POST与GET区别,以及POST与GET同步异步的使用 ①.GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。②.从上面的...

iOS网络请求中常见的几种方式。POST与GET区别,以及POST与GET同步异步的使用

①.GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。②.从上面的http请求中就能看出,GET提交是将请求的数据附加到URL之后,用?分割、参数用&连接。并且字符串已经被加密。而post的提交是放到了http包中。从这点看来GET请求的地址栏会改变,RUL附加上了请求的数据,而POST地址栏不会改变,UTL没有变化。更加深一层看GET的安全性不高,很容易暴露信息。③.另外虽然http协议没有对传输数据大小进行限制也没有对url长度进行限制,但是实际情况中浏览器对url进行限制,这样GET的传输数据大小随着URL长度被限制而受到限制。反观POST由于不是通过URL传值,所以没有限制。

同步请求和异步请求的区别和联系:

1.使用同步链接,当同步连接请求数据时,当数据还未请求成功之前,用户界面做任何操作都是无效的,都是不会响应的。只有当请求数据完毕之后,才会响应用户交互,所以通常会卡死主线程

2.异步连接:当异步请求时,会有单独的子线程去请求数据,而主线程依然响应处理用户交互,所以此时用户交互得到处理,用户流畅操作,用户体验比较好,所以开发过程中最多的还是异步链接。

get请求的代码如下:

 

 //设置URL路径
     NSString *urlStr=[NSString stringWithFormat:@"https://localhost:8080/MyWeb/Book?username=%@&password=%@&type=get",@"欧燕松",@"keso"];
     urlStr=[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     NSURL *url=[NSURL URLWithString:urlStr];
    //通过URL设置网络请求
    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
 NSError *error=nil;
    //获取服务器数据
    NSData *requestData= [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
    if (error) {
        NSLog(@"错误信息:%@",[error localizedDescription]);
    }else{
        NSString *result=[[NSString alloc]initWithData:requestData encoding:NSUTF8StringEncoding];
        NSLog(@"返回结果:%@",result);

    }

post请求方式代码如下:

//设置URL
    NSURL *url=[NSURL URLWithString:@"https://localhost:8080/MyWeb/Book"];
    //创建请求
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    
    [request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET
    
    NSString *param= @"Name=博客园&Address=https://www.cnblogs.com/xiaofeixiang&Type=post";//设置参数
    
    NSData *data = [param dataUsingEncoding:NSUTF8StringEncoding];
    
    [request setHTTPBody:data];
    
    //连接服务器
    NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    NSString *result= [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];

    NSLog(@"%@",result);