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

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

 
    本应用使用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

ASIHTTPRequest框架使用总结系列之阿堂教程5(上传数据)的更多相关文章

  1. ASIHTTPRequest框架使用总结系列之阿堂教程4(下载数据)

    从本篇开始,阿堂准备进一步介绍ASIHTTPRequest框架下载数据和上传数据的实际应用.        为了实现多线程并发请求网络能力,ASIHTTPRequest被设计成 NSOperation ...

  2. ASIHTTPRequest框架使用总结系列之阿堂教程1(安装配置篇

    在前年,阿堂在<IOS开发系列之阿堂教程:玩转IPhone客户端和Web服务端交互(客户端)实践>一文中,对于ASIHTTPRequest框架有过一些介简单绍,具体链接地址见http:// ...

  3. ASIHTTPRequest框架使用总结系列之阿堂教程2(同步请求)

    从本篇开始,阿堂结合一些具体代码来说明.在ASIHTTPRequest框架中,与http请求相关的类有ASIHTTPRequest  和 ASIFormDataRequest,其中最常用的是 ASIH ...

  4. ASIHTTPRequest框架使用总结系列之阿堂教程3(异步请求)

    在上一节中,阿堂和网友们分享了ASIHTTPRequest框架对于get,post的同步请求方式.很显然,如果网速比较慢,查询的时候会一直很黑屏,直到请求结束界面才出现结果,这样用户体验肯定很不好了. ...

  5. 使用.NET框架、Web service实现Android的文件上传(二)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYUAAAKpCAIAAADcx6fPAAAgAElEQVR4nOydd1hT5+LHg1attbfr1t ...

  6. 一篇文章了解Github和Git教程-AndroidStudio上传Github教程

    前言 为了方便保存自己的代码,下班后可以回家继续进行,自己的码农工作,介绍一下Github. 什么是Github呢? 作为一个编程人员,我觉得得了解一下Github吧! 当然,如果你放弃了码农或者技术 ...

  7. 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  8. [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]

    简单的JSON的HTTP传输就不说了,看一个简单的DEMO吧. 主要明白parameters是所填参数,类型是字典型.我把这部分代码封装起来了,以便多次调用.也许写在一起更清楚点. #pragma m ...

  9. Spring Boot 教程 - 文件上传下载

    在日常的开发工作中,基本上每个项目都会有各种文件的上传和下载,大多数文件都是excel文件,操作excel的JavaAPI我用的是apache的POI进行操作的,POI我之后会专门讲到.此次我们不讲如 ...

随机推荐

  1. 【bzoj2079】[Poi2010]Guilds 构造结论题

    题目描述 Zy皇帝面临一个严峻的问题,两个互相抵触的贸易团体,YYD工会和FSR工会,他们在同一时间请求在王国各个城市开办自己的办事处.这里有n个城市,其中有一些以双向马路相连,这两个工会要求每个城市 ...

  2. [洛谷P3701]「伪模板」主席树

    题目大意:太暴力了,就不写了,看这儿 题解:对于每个$byx$的人,从源点向人连边,容量为此人的寿命. 对于每个手气君的人,从人向汇点连边,容量为此人的寿命. 对于每个$byx$的人与手气君的人,如果 ...

  3. bestcoder15_love

    #include <iostream> #include <stdio.h> #include <string.h> #include <vector> ...

  4. css垂直居中的几种方式

    1. 对于可以一行处理的 设置 height:apx; line-height:apx; 2.对于一段文字(会多行显示的)            ->2.1如果是可以设置一个固定高度的      ...

  5. LinuxMint下JDK+Tomcat+Mysql+Eclipse javaEE安装

    网上查了很多方法,总结下比较简单的做法. 本人使用的系统版本为64位LinuxMint18,cinnamon桌面环境,预装Openjdk1.8.开发使用版本为oracle的1.7版本jdk. 1 jd ...

  6. 消耗战(bzoj 2286)

    Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军 ...

  7. 汕头市队赛 SRM 08 B

    B-3 SRM 08 描述 给长度为 n 的数列 A 和长度为 m 的数列 B,问有多少长度为 m 的数列 C 满足 输入格式 第一行俩整数 n 和 m 第二行 n 个整数 ,表示数列 A 第三行 m ...

  8. HDU 3389 Game (阶梯博弈)

    Game Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status D ...

  9. Linux下Tcpdump使用

    1. 介绍 tcpdump是一款用来截取网络数据的工具:这里主要介绍的是为嵌入式Linux编译tcpdump的方法 2. 编译 首先去官网下载源代码, 需要下载tcpdump和libpcap, 将他们 ...

  10. 华为上机测试题(Excel表格纵列字母数字转换-java)

    PS:这是我刚做的一道题,题目不难,满分60,得分40,大家看看哪里有问题,欢迎提意见,感谢! /* * 题目:Excel表格纵列字母数字转换 * 描述: 在Excel中列的编号为A-Z,AA-AZ, ...