• ASIHTTPRequest框架使用总结系列之阿堂教程5(上传数据)


    上篇文章中,阿堂和网友们分享了如何用ASIHTTPRequest框架下载数据的实例,本篇阿堂将数据介绍如何用ASIHTTPRequest框架上传数据的应用实例。

          数据上传是通过ASIHTTPRequest类实现的。前面提到,ASIFormDataRequest相当于html的表单,当用户通过submit按钮提交给服务器。因此,ASIFormDataRequest请求对象的作用相当于提交表单数据,默认采用post请求方法。
     
         下面,阿堂提供的这个实例是将项目应应用中的test1.jpg上传到服务端,然后,接将将服务端的test1.jsp又下载到界面中再显示出来。
     
         ASIHTTPRequest框架使用总结系列之阿堂教程5(上传数据)
    ASIHTTPRequest框架使用总结系列之阿堂教程5(上传数据)

     
        本应用使用ASIHTTPRequest框架上传,下载文件的主要调用代码如下
    ViewController.h,  ViewController.m
     

    #import

    #import "ASIHTTPRequest.h"

    #import "ASIFormDataRequest.h"

    #import "NSNumber+Message.h"

    #import "NSString+URLEncoding.h"

    @interface ViewController : UIViewController

    @property (weak, nonatomic) IBOutlet UIImageView *imageView1;

    @property (weak, nonatomic) IBOutlet UIImageView *imageView2;

    - (IBAction)onClick:(id)sender;

    @end

     
    ------------------------------------------------------------------

    #import "ViewController.h"

    @interface ViewController ()

    @end

    @implementation ViewController

    - (void)viewDidLoad

    {

        [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    }

    - (void)didReceiveMemoryWarning

    {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    - (IBAction)onClick:(id)sender {

        

        NSString *strURL1 = @"http://www.crazyit.com/service/upload.php";

        

    NSURL *url1 = [NSURL URLWithString:[strURL1 URLEncodedString]];

        

        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url1];

        [request setPostValue:@"heyitang@qq.com" forKey:@"email"];

        NSString *path = [[NSBundle mainBundle] pathForResource:@"test1" ofType:@"jpg"];

        

        [request setFile:path forKey:@"file"];

        [request setDelegate:self];

        [request setDidFinishSelector:@selector(requestSuccess:)];

        [request setDidFailSelector:@selector(requestError:)];

        [request startAsynchronous];

        

    }

    - (void)requestSuccess:(ASIHTTPRequest *)request

    {

        NSData *data = [request responseData];

        NSError *eror;

        NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:dataoptions:NSJSONReadingAllowFragments error:&eror];

        if (!resDict) {

            

            //查看图片

            [self seeImage];

            

        } else {

            NSNumber *resultCodeObj = [resDict objectForKey:@"ResultCode"];

            

            NSString *errorStr = [resultCodeObj errorMessage];

            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"错误信息"

                                                                message:errorStr

                                                               delegate:nil

                                                      cancelButtonTitle:@"OK"

                                                      otherButtonTitles: nil];

            [alertView show];

        }

    }

    - (void)requestError:(ASIHTTPRequest *)request

    {

        NSError *error = [request error];

        NSLog(@"%@",[error localizedDescription]);

    }

    -(void)seeImage

    {

        NSString *strURL = [[NSString alloc] initWithFormat:@"http://www.crazyit.com/service/download.php?email=%@&FileName=test1.jpg",@"heyitang@qq.com"];

        

        NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]];

        

        __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

        [request setCompletionBlock:^{

            

            NSData *data  = [request responseData];

            

            UIImage *img = [UIImage imageWithData:data];

            _imageView1.image = img;

            

        }];

        [request setFailedBlock:^{

            NSError *error = [request error];

            NSLog(@"%@", [error localizedDescription]);

            

        }];

        [request startAsynchronous];

    }

    @end

  • 相关阅读:
    eclipse卡死在search for main types 20 files to index
    多线程并发执行任务,取结果归集。终极总结:Future、FutureTask、CompletionService、CompletableFuture
    同步中的四种锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock
    根据CPU核心数确定线程池并发线程数
    将DataTable转换成CSV文件
    C#中DataTable转化为List<T>解析
    DotNet项目中的一些常用验证操作
    DotNet处理服务器路径的方法
    C#运用ThoughtWorks生成二维码
    C#枚举类型的常用操作总结
  • 原文地址:https://www.cnblogs.com/lisa090818/p/4250037.html
Copyright © 2020-2023  润新知