在iOS中,常见的发送HTTP请求的方案有

苹果原生(自带)

  1. NSURLConnection:用法简单,最古老最经典的一种方案
  2. NSURLSession:功能比NSURLConnection更加强大,推荐使用这种技术(2013年推出)
  3. CFNetwork:NSURL的底层,纯C语言

 

第三方框架

  1. ASIHttpRequest:外号:“HTTP终结者”,功能及其强大,早已不维护
  2. AFNETworking:简单易用,提供了基本够用的常用功能,维护和使用者居多
  3. MKNetworkKit:简单易用,来自印度,维护使用者少

 

建议

为了提高开发效率,企业开发用的基本是第三方框架

 

一.使用NSURLConnection

 

NSURLConnection常见的发送请求方法有以下几种
 
//同步请求
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;
//异步请求:根据对服务器返回数据的处理方式的不同,又可以分为2种
//block回调
+ (void)sendAsynchronousRequest:(NSURLRequest*) request  queue:(NSOperationQueue*) queue                                                  completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;

//代理
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate;
+ (NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate;
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately;

代理相关的方法

#pragma mark -NSURLConnectionDelegate - begin

/**
 请求失败(比如请求超时)
 */
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    
}

/**
 接收到服务器的响应
 */
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"didReceiverResponse");
    //初始化
    self.responseData = [NSMutableData data];
}

/**
 接收到服务器的数据(如果数据量比较大,这个方法会调用多次)
 */
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    NSLog(@"didReceiveData - %zd",data.length);
    //拼接
    [self.responseData appendData:data];
}

/**
 服务器的数据成功,接收完毕
 */
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"connectionDidFinishLoading");
    //显示数据
    NSString *str = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding];
    NSLog(@"%@",str);

}
View Code

 

 二.使用NSURLSession 

使用NSURLSession对象创建Task,然后执行Task

 

iOS中发送HTTP请求的方案

1.使用NSURLSessionDataTask

post请求

相关文章:

  • 2021-08-09
  • 2021-09-30
  • 2021-10-01
  • 2021-10-03
  • 2021-10-03
  • 2021-09-22
  • 2021-07-11
  • 2022-01-15
猜你喜欢
  • 2022-12-23
  • 2021-12-27
  • 2021-08-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案