iOS用ASIHttpRequest上传

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

1.新建一个single view工程,导入ASIHttpRequest库,导入MobileCoreServices、CFNetwork、SystemConfiguration和libz1.2.5.dylib四个系统库

2.随便导入一张图片,比如haoyou.png

3.ViewController.h

    #import <UIKit/UIKit.h>  
    #import "ASIHTTPRequest.h"  
    #import "ASIFormDataRequest.h"  
    @interface ViewController : UIViewController <ASIHTTPRequestDelegate>  
    @property (nonatomic, copy)NSString *m_auth;  
    @end  

4.ViewController.m 添加两个按钮
    - (void)viewDidLoad {  
        [super viewDidLoad];  
          
        UIButton *loginBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
        loginBtn.frame = CGRectMake(100, 20, 120, 40);  
        [loginBtn setTitle:@"登录" forState:UIControlStateNormal];  
        [loginBtn addTarget:self action:@selector(login) forControlEvents:UIControlEventTouchUpInside];  
        [self.view addSubview:loginBtn];  
          
        UIButton *uploadBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
        uploadBtn.frame = CGRectMake(100, 80, 120, 40);  
        [uploadBtn setTitle:@"上传" forState:UIControlStateNormal];  
        [uploadBtn   addTarget:self action:@selector(upload) forControlEvents:UIControlEventTouchUpInside];   
        [self.view addSubview:uploadBtn];  
    }  

5.实现login和upload两个方法
    - (void)login {  
        NSURL *url = [NSURL URLWithString:@"..."];//此处省略请求url  
        //请求  
        ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];  
        request.tag = 10;  
        request.delegate = self;  
        [request startAsynchronous];  
    }  
      
    - (void)upload {  
        NSURL* url = [NSURL URLWithString:@"..."];//此处省略请求url  
        UIImage* img = [UIImage imageNamed:@"haoyou.png"];  
        NSData* data = UIImagePNGRepresentation(img);  
        //ASIFormDataRequest请求是post请求,可以查看其源码  
        ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL:url];  
        request.tag = 20;  
        request.delegate = self;  
        [request setPostValue:self.m_auth forKey:@"m_auth"];  
    //    [request setFile:@"tabbar.png" forKey:@"haoyou"];//如果有路径,上传文件  
        [request setData:data  withFileName:@"tmp.png" andContentType:@"image/png" forKey:@"headimage"];  
    //               数据                文件名,随便起                 文件类型            设置key,要和服务端保持一致  
        [request startAsynchronous];  
    }  

6.实现协议
    - (void)requestFailed:(ASIHTTPRequest *)request {  
        NSLog(@"请求失败");  
    }  
      
    - (void)requestFinished:(ASIHTTPRequest *)request {  
        if (request.tag == 10) {  
            NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:request.responseData options:0 error:nil];  
            self.m_auth = [dic objectForKey:@"m_auth"];  
            NSLog(@"%@", self.m_auth);  
        }  
        if (request.tag == 20) {  
            NSLog(@"%@", request.responseString);  
        }  
    }