我在 iOS 平台的 0.20.x 版本中看到了 RestKit 框架的许多重大变化。到目前为止我在网上还没有找到的一件事是如何使用新版本的 RestKit 下载二进制文件的示例。
我需要将 JSON 对象发送到 REST 服务并期望得到一个二进制文件作为回报。看起来很简单,不是吗,但出于某种原因,RestKit 只希望 JSON(以及常见的 Internet 内容类型,如 XML)回来。JSON 对象本质上是一个请求对象,它告诉服务它应该为我获取哪个图像。
我在 iOS 平台的 0.20.x 版本中看到了 RestKit 框架的许多重大变化。到目前为止我在网上还没有找到的一件事是如何使用新版本的 RestKit 下载二进制文件的示例。
我需要将 JSON 对象发送到 REST 服务并期望得到一个二进制文件作为回报。看起来很简单,不是吗,但出于某种原因,RestKit 只希望 JSON(以及常见的 Internet 内容类型,如 XML)回来。JSON 对象本质上是一个请求对象,它告诉服务它应该为我获取哪个图像。
幸运的是,我已经设法使用底层的 AFNNetworking 框架来帮助我解决这个问题,并利用 RestKit 序列化程序来生成我需要的请求对象。
MyRequestClass *request = // ... get my request class instance
RKObjectManager *manager = [RKObjectManager sharedManager];
NSMutableURLRequest *downloadRequest = [manager requestWithObject:request method:RKRequestMethodPOST path:ROUTE_URL_MY_SERVICE parameters:nil];
AFHTTPRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:downloadRequest];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
// Use my success callback with the binary data and MIME type string
callback(operation.responseData, operation.response.MIMEType, nil);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// Error callback
callback(nil, nil, error);
}];
[manager.HTTPClient enqueueHTTPRequestOperation:requestOperation];