谁说非ARC类库不能在ARC项目中使用? - ARC项目中用ASIHTTPRequest POST数据.

谁说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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值