谁说ARC项目下面就不能使用ASIHTTPRequest? 误人子弟的文章太多, 简直是害人啊~~~~
最近正在折腾Objective C Post数据, 遇到一点小问题就是不知道如何将NSData格式的图片文件与其它的字符数据一起提交到服务器上面.
经过google, 找到了ASIHttpRequest这个组件, 很强大, 很好用. 唯一不足的是我使用的是xcode4.2 ARC, 编译之后一堆错误. 因此, 要解决错误.
在ARC项目中, 可以指定哪一些class不使用ARC的, 具体操作是
点击项目 - Build Phases - Compile Sources中, 双击class文件, 编辑Compiler Flags加入 -fno-objc-arc
这样, 在ARC项目中, 你的这些class就不会再使用ARC了, 当然编译也不会出现错误喽.
然后按照官方的指示, 加入framework到项目中, 就可以使用了.
- SystemConfiguration.framework,
- MobileCoreServices.framework,
- CoreGraphics.frameworkand
- libz.dylib.
一些简单的用法示例, 具体可以参见官方网站
提交数据的请求
- (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];
}
如何组装POST参数
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"first_name"];
[request setPostValue:@"Copsey" forKey:@"last_name"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
// Upload a file on disk
[request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg"
forKey:@"photo"];
// Upload an NSData instance
[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request addPostValue:@"Ben" forKey:@"names"];
[request addPostValue:@"George" forKey:@"names"];
[request addFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photos"];
[request addData:imageData withFileName:@"george.jpg" andContentType:@"image/jpeg" forKey:@"photos"];
当然, 更详细的用法可以参见网站
http://allseeing-i.com/ASIHTTPRequest/How-to-use