我正在从不再属于该项目的开发人员手中接手一个旧的 iOS 项目 - 该应用程序正在被重写,因此我将仅支持 iOS7 及更高版本。
所以,我想使用 AFNetworking 2.0 而不是 ASIHTTPRequest——这背后的原因是 NSURLSeesion。AFNetworking 2.0 支持 NSURLSession 并且我可以让我的应用程序在机会时在后台下载内容(根据 Apple - 必须使用 NSURLSession 并打开后台获取模式,才能工作?)
首先让我说我是 iOS 的新开发人员,网络方面的东西让我有点不知所措 - 但我决心尽可能多地了解它。我也阅读了 AFNetworking 文档,但我担心因为某些术语(请求、响应、灭菌等)我无法理解——我并没有 100% 掌握它们。
因此,我查看了以前的开发人员用来构建 GET / POST 请求的 ASIHTTPRequest 代码 - 这是他们使用的代码:
+ (ASIHTTPRequest*) buildRequest: (NSString*) url RequestType: (NSString*) requestType
PostData: (NSString*) postData
Host: (NSString*) host
ContentType: (NSString*) contentType
SoapAction: (NSString*) soapAction
RequestProperties: (NSDictionary*) requestProperties
{
NSURL *url = [NSURL URLWithString: url];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:u] autorelease];
[request setDidFinishSelector:@selector(requestDone:)];
[request setDidFailSelector:@selector(requestWentWrong:)];
[request setTimeOutSeconds:20];
[request setQueuePriority:NSOperationQueuePriorityVeryHigh];
if (host != nil)
[request addRequestHeader: @"Host" value: host];
if (contentType != nil)
[request addRequestHeader: @"Content-Type" value: contentType];
if (soapAction != nil)
[request addRequestHeader: @"SOAPAction" value:soapAction];
if (requestType != nil)
[request setRequestMethod: requestType];
if (postData != nil)
{
NSMutableData* mPostData = [NSMutableData dataWithData:[postData dataUsingEncoding:NSUTF8StringEncoding]];
NSString *msgLength = [NSString stringWithFormat:@"%d", [postData length]];
[request setPostBody: mPostData];
[request addRequestHeader: @"Content-Length" value:msgLength];
}
if (requestProperties != nil)
{
for (int i = 0; i < [[requestProperties allKeys] count]; i++)
{
[request addRequestHeader:[[requestProperties allKeys] objectAtIndex: i] value: [requestProperties objectForKey:[[requestProperties allKeys] objectAtIndex: i]]];
}
}
return request;
}
我正在尝试理解此代码并将其升级为使用 AFNetworking V2.0。我认为,仅用 AFHTTPRequestOperation 替换 ASIHTTPRequest 不会成功,对吗?