ASI使用介绍(Post与文件上传)

上一节中,介绍了ASI的基本使用,而且默认的使用方式都是Get请求方式。如有疑问,请点击这里。Get请求是从url中传递参数的,并且一般是要向服务器“索要”自己想要的数据。而Post请求,一般都是表单数据的提交,请求数据的信息在请求报文中,后台服务器接受到请求信息后,会进行相应的处理,比如:登陆操作。这一节,我就ASI中使用Post请求做一些简单的介绍。

在ASI中,进行Post请求使用的类是 ASIFormDataRequest

Example 1:网页版163邮箱登陆。

- (void)postRequest {
    NSURL *url = [NSURL URLWithString:@"http://mail.163.com/"];
    self.request = [ASIFormDataRequest requestWithURL:url];

    [self.request setPostValue:@"username" forKey:@"your username"];
    [self.request setPostValue:@"password" forKey:@"your password"];

    self.request.timeOutSeconds = 10;

    __weak typeof(self.request) that = self.request;
    self.request.completionBlock= ^{
        NSLog(@"data:%@",that.responseString);
    };

    [self.request startAsynchronous];
}

如果登陆成功, responseString返回回来的数据,就是你网页版登陆成功邮箱列表页面的html源代码。

Example 2:上传手机相册照片到服务器。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self uploadPictureFromAlbum];
}

#pragma mark - 打开照片选择控制器(即手机中的相册)
- (void)uploadPictureFromAlbum {
    // 1. 相册控制器
    UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];

    // 设置代理,图片选择完毕之后所要做的事情
    pickerController.delegate = self;

    // 2. 设置类型(照片)
    pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    // 2. 设置类型(拍照),然后获得拍照后的图片
    //pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;

    // 3. 弹出照片
    [self presentViewController:pickerController animated:YES completion:nil];
}

#pragma mark - 相片选择完成后,回调回来
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    // 1.选择图片完毕后,先关闭UIImagePickerController
    [picker dismissViewControllerAnimated:YES completion:nil];

    // 拿到图片流对象
    UIImage *image = info[UIImagePickerControllerOriginalImage];

    [self uploadWithImage:image];
}

#pragma mark - 上传本地相册图片,二进制对象(流对象)
- (void)uploadWithImage:(UIImage *)image {
    NSURL *postUrl = [NSURL URLWithString:@"post site url"];

    // 1.建立请求
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:postUrl];

    // 2.流的形式指定上传的文件
    NSData *data = UIImagePNGRepresentation(image);
    [request setData:data withFileName:@"uploadfileName" andContentType:@"image/png" forKey:@"my picture"];

    // 3.POST其他参数
    [request setPostValue:@"Jason" forKey:@"username"];
    [request setPostValue:@"123" forKey:@"password"];

    // 4.发送请求
    [request startAsynchronous];

    // 5.监听请求
    request.completionBlock = ^{
        NSLog(@"上传完成");
    };

}

本节简单的介绍了ASI中Post请求的应用,下一节,我将介绍利用ASI完成网络资源的下载。

时间: 2024-08-28 05:13:29

ASI使用介绍(Post与文件上传)的相关文章

[转] HTML5 FormData 方法介绍以及实现文件上传

XMLHttpRequest 是一个浏览器接口,通过它,我们可以使得 Javascript 进行 HTTP (S) 通信.XMLHttpRequest 在现在浏览器中是一种常用的前后台交互数据的方式.2008年 2 月,XMLHttpRequest Level 2 草案提出来了,相对于上一代,它有一些新的特性,其中 FormData 就是 XMLHttpRequest Level 2 新增的一个对象,利用它来提交表单.模拟表单提交,当然最大的优势就是可以上传二进制文件.下面就具体介绍一下如何利用

HTML5 FormData 方法介绍以及实现文件上传

来源:http://blog.csdn.net/u014607184/article/details/52372551

Struts2文件上传

Struts2提供了文件上传的框架,Struts2默认的文件上传框架是cos,大家也可以根据自己的需要修改Struts2中的文件上传框架,对于文件上传来说,无论使用Struts2中的哪一种框架,上传方式都是比较简单的.下面用一个案例介绍Struts2的文件上传. 该案例比较简单,允许用户进行文件上传,上传成功提示文件上传的主题,上传失败则提示上传失败的提示,当然为了防止恶意上传,我专门做了一个简单的文件过滤,限制文件的格式 首先看页面的操作 上传成功的情况 上传失败的情况 接下来分析源码 upl

深入springMVC源码------文件上传源码解析(下篇)

在上篇<深入springMVC------文件上传源码解析(上篇) >中,介绍了springmvc文件上传相关.那么本篇呢,将进一步介绍springmvc 上传文件的效率问题. 相信大部分人在处理文件上传逻辑的时候会直接获取输入流直接进行操作,伪代码类似这样: @RequestMapping(value = "/upload", method = RequestMethod.POST) public ResultView upload(@RequestParam("

php文件上传限制

PHP默认的上传限定是最大2M,想上传超过此设定的文件,需要调整PHP.apache等的一些参数.下面,我们简要介绍一下PHP文件上传涉及到的一些参数: file_uploads :是否允许通过HTTP上传文件的开关,默认为ON即是开. upload_tmp_dir :upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限,如果未指定则PHP使用系统默认值. upload_max_filesize :允许上传文件大小的最

Laravel 5 教程 - 文件上传

一.简介 Laravel 有很棒的文件系统抽象层,是基于 Frank de Jonge 的 Flysystem 扩展包. Laravel 集成的 Flysystem 提供了简单的接口,可以操作本地端空间. Amazon S3 . Rackspace Cloud Storage .更方便的是,它可以非常简单的切换不同保存方式,但仍使用相同的 API 操作! 默认使用本地端空间.当然,你也可以设置多组磁盘,甚至在多个磁盘使用相同的驱动.Laravel文件系统提供了非常强大的功能,但是本文只介绍常用的

0025文件上传

主要介绍三种文件上传的方式: 1.传统文件上传 a.form表单的enctype必须写成enctype="multipart/form-data" b.表达提交的方式必须是method="post" c.提供<input type="file"/><br/> d.提供commons-fileupload-1.3.1.jar和commons-io-2.4.jar(pom.xml中配置) 2.SpringMVC文件上传 a.需

文件上传到tomcat服务器 commons-fileupload的详细介绍与使用

三个类:DiskFileUpload.FileItem和FileUploadException.这三个类全部位于org.apache.commons.fileupload包中. 首先需要说明一下form表格的enctpye的属性: 表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传:只有使用了multipart/form-data,

ASP中文件上传组件ASPUpload介绍和使用方法

[导读]要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload  要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件,它的下载网址是:           http://www.persits.com/aspupload.exe       组件提供者网址是:           http://www.aspupload.com