zoukankan      html  css  js  c++  java
  • ASIHTTPRequest 一款强大的HTTP包装开源项目

    ASIHTTPRequest,是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装。
    特色功能如下:
    1,下载的数据直接保存到内存文件系统里
    2,提供直接提交(HTTP POST)文件的API
    3,可以直接访问与修改HTTP请求与响应HEADER
    4,轻松获取上传与下载的进度信息
    5,异步请求与队列,自动管理上传与下载队列管理机
    6,认证与授权的支持
    7,Cookie
    8,请求与响应的GZIP
    9,代理请求

    下面来两个小例子:

    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request start];
    NSError *error = [request error];
    if (!error) {
        NSString *response = [request responseString];
    }

    当你需要添加更多的请求信息时,如,添加个请求Header:

    [request addRequestHeader:@"name" value:@"Jory lee"];

    添加Post请求时的健值:

    [request setPostValue:@"Ben" forKey:@"first_name"];
    [request setPostValue:@"Copsey" forKey:@"last_name"];
    [request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];

    设置HTTP的授权帐号:

    [request setUsername:@"username"];
    [request setPassword:@"password"];

    一个异步请求:

    - (IBAction)grabURLInBackground:(id)sender
    {
      NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
      ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
      [request setDelegate:self];
      [request startAsynchronous];
    }
    - (void)requestFinished:(ASIHTTPRequest *)request
    {
      // Use when fetching text data
      NSString *responseString = [request responseString];
      // Use when fetching binary data
      NSData *responseData = [request responseData];
    }
    - (void)requestFailed:(ASIHTTPRequest *)request
    {
      NSError *error = [request error];
    }   

    在我们数据获取的过程中,如果数据源复杂,一个请求队列是必不可少的:

    - (IBAction)grabURLInTheBackground:(id)sender
    {
      if (![self queue]) {
      [self setQueue:[[[NSOperationQueue alloc] init] autorelease]];
      }
      NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
      ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
      [request setDelegate:self];
      [request setDidFinishSelector:@selector(requestDone:)];
      [request setDidFailSelector:@selector(requestWentWrong:)];
      [[self queue] addOperation:request]; //queue is an NSOperationQueue
    }
    - (void)requestDone:(ASIHTTPRequest *)request
    {
      NSString *response = [request responseString];
    }
    - (void)requestWentWrong:(ASIHTTPRequest *)request
    {
      NSError *error = [request error];
    }   
  • 相关阅读:
    python之路——第三块(面向对象)
    python-第二块:random、shutil,json & pickle,shelve模块
    Win10和Linux系统下安装Mysql 8.0+版本
    django-(CSRF跨站请求伪造XSS、Cookie、Session、缓存、序列化、信号)
    django-(创建工程项目的基本配置、url路由系统详解、中间件&请求生命周期、admin介绍、FBV和CBV装饰器实现用户登陆认证)
    七、Web框架基础
    六、jQuery基础
    四、Dom基础
    二、css基础
    缓存和非关系型数据库的相关知识(memcached、redis)网址连接
  • 原文地址:https://www.cnblogs.com/appwgh/p/2517492.html
Copyright © 2011-2022 走看看