标签: afnetworking-2

从RestKit过渡到纯AFNetworking 2.0

我过去两年一直在使用RestKit,但最近我开始考虑从这些monolith框架过渡,因为它看起来真的有点过分.

这是我前进的优点:

  1. 使用NSURLSession进行后台提取非常需要,而RestKit只有实验分支用于过渡到AFNetworking 2.0.转换完成后没有实际日期.(主要原因)
  2. 无需网络库中的CoreData支持,因为不需要全功能的离线数据存储.
  3. 令人头疼的是响应/请求描述符的新概念,因为它们不支持路径模式中的不同参数(例如访问令牌参数),并且无法在具有自定义描述符的一行中创建对象请求操作.在这里,我将对象管理器的功能作为外观丢失.

I. 对象映射过程中RestKit的最大损失. 你能推荐你使用的独立库,它们表现出灵活和稳定吗?

II.我很伤心,我不需要功能齐全的存储,但我仍然需要在某些地方提供一些缓存支持.我听说NSURLCache在上一次操作系统发布中变得很有用.你有没有用它,策略是什么?当网络连接断开时,它是否返回缓存的API响应

III.有人面临同样的问题吗?您应用了哪些解决方案?也许有人可以提供一些关于他或她在使用纯AFNetworking的多个应用程序中使用的架构的建议

core-data nsurlcache restkit-0.20 afnetworking-2 nsurlsession

24
推荐指数
1
解决办法
3804
查看次数

AFNetworking HTTP删除使用正文而不是URL

我正在尝试从我的iOS应用程序向RESTful Django Web服务发送HTTP DELETE请求.我使用AFNetworking 2.0(2.4).

在分析了AFHTTPREquestOperation我的API调用的成功块后,我发现请求的主体是零.参数URL在URL中编码和发送.

<AFHTTPRequestOperation: 0x10c587940, 
state: isFinished, 
cancelled: NO 
request: <NSMutableURLRequest: 0x10c521ab0> { 
URL: https://anURL.com/connections?data%5Bconnections%5D%5B%5D%5Bid%5D=106 }, 
response: <NSHTTPURLResponse: 0x10c5c7590> { 
URL: anURL.com/
connections?data%5Bconnections%5D%5B%5D%5Bid%5D=106 
} 
{ status code: 200, headers {
    Connection = "Keep-Alive";
    "Content-Type" = "application/json";
    Date = "Tue, 05 Aug 2014 14:07:53 GMT";
    "Keep-Alive" = "timeout=5, max=100";
    Server = "Apache/2.4.7 (Ubuntu)";
    "Transfer-Encoding" = Identity;
} }>
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否可以在请求正文中发送参数,就像使用HTTP POST而不是在URL中发送它们一样.那可能吗?

如何使用AFNetworking做到这一点?

我如何发送atm:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch ios afnetworking afnetworking-2

24
推荐指数
1
解决办法
5151
查看次数

在AFNetworking 2.x中替换AFJSONRequestOperation

按照本教程,我正在制作一个带有HTML请求的基本iPhone应用程序.

本教程让我在AFNetworking中使用AFJSONRequestOperation.问题是,我正在使用AFNetworking版本2,它不再具有AFJSONRequestOperation.

所以,当然,这个代码(从教程的大约一半,在" 查询iTunes Store搜索API " 标题下)不编译:

NSURL *url = [[NSURL alloc]
    initWithString:
    @"http://itunes.apple.com/search?term=harry&country=us&entity=movie"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
AFJSONRequestOperation *operation =
    [AFJSONRequestOperation JSONRequestOperationWithRequest:request
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        NSLog(@"%@", JSON);
    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response,
        NSError *error, id JSON) {
            NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
    }];
[operation start];
Run Code Online (Sandbox Code Playgroud)

我的问题是,我该如何替换AFJSONRequestOperation以便我可以继续使用AFNetworking 2.x?我用谷歌搜索了这一点,发现似乎没有其他人在问这个问题.

objective-c ios afnetworking afjsonrequestoperation afnetworking-2

22
推荐指数
2
解决办法
1万
查看次数

Swift和AFNetworking集成

现在,swift是开发iOS应用程序的新语言.

我们如何与AFNetworking集成或使用NSURLSession将是一个更好的选择???

请帮帮我..

objective-c afnetworking afnetworking-2 swift ios8

21
推荐指数
2
解决办法
2万
查看次数

将NSTaggedPointerString转换为NSString

我已经调用了百度的界面来检查id号,但是当我在模块中使用它来存储它然后打印这个属性的类名时,性别的值返回时sex = M没有"" M在JSON中,它打印为,我怀疑如何将其转换为String以使用它.有人有好主意吗?NSStringsexNSTaggedPointerString

json objective-c afnetworking-2

21
推荐指数
2
解决办法
3万
查看次数

AFNetworking 2.0 - 使用responseObject作为NSDictionary

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];
Run Code Online (Sandbox Code Playgroud)

这是在AFNetworking 2.0中发送请求的推荐方法GET.我想获得json中特定键的值,所以我想用responseObjectas NSDictionary.这就是我的尝试:

NSError *jsonError = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:(NSData *)responseObject options:kNilOptions error:&jsonError];
Run Code Online (Sandbox Code Playgroud)

它不起作用:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary bytes]: unrecognized selector sent to instance 0xa048120'
Run Code Online (Sandbox Code Playgroud)

如何获取特定键的值responseObject

iphone objective-c nsdictionary ios afnetworking-2

18
推荐指数
2
解决办法
2万
查看次数

AFNetworking 2.0取消了特定任务

我正在尝试afnetworking 2.0并试图找出如何取消特定任务.旧的方式是使用类似的东西

[self cancelAllHTTPOperationsWithMethod:@"POST" path:@"user/receipts"]
Run Code Online (Sandbox Code Playgroud)

但我在2.0中没有看到这样的东西

我创建了一个子类AFHTTPSessionManager,让我可以访问待处理任务的数组,我可以直接取消它们,但我不知道如何识别另一个任务,所以我只能取消特定的任务.任务确实有一个taskidentifier,但这似乎不是我需要的.

NSString *path = [NSString stringWithFormat:@"user/receipts"];
[self.requestSerializer setAuthorizationHeaderFieldWithUsername:[prefs valueForKey:@"uuid"] password:self.store.authToken];
[self GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
            completionBlock(responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            errorBlock(error);
        }];
Run Code Online (Sandbox Code Playgroud)

现在,如果我想取消此请求,我将如何处理此问题?

ios afnetworking afnetworking-2

17
推荐指数
2
解决办法
9659
查看次数

使用AFNetworking 2.0设置可访问性

我正在尝试使用新的2.0 AFNetworking设置Reachability .

在我的AppDelegate中,我初始化了sharedManager.

// Instantiate Shared Manager
[AFNetworkReachabilityManager sharedManager];
Run Code Online (Sandbox Code Playgroud)

然后在相关的VC方法中我检查是否isReachable:

// Double check with logging
if ([[AFNetworkReachabilityManager sharedManager] isReachable]) {
    NSLog(@"IS REACHABILE");
} else {
    NSLog(@"NOT REACHABLE");
}
Run Code Online (Sandbox Code Playgroud)

目前这在模拟器中没有按预期工作,但我想这需要在设备而不是模拟器上进行测试.

问题 我想要做的是监控VC内的连接.所以我在viewDidLoad中运行以下命令:

// Start monitoring the internet connection
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
Run Code Online (Sandbox Code Playgroud)

我如何注册更改?一旦网络连接发生变化,将会调用什么/我将无法从文档中看到这一点.

reachability ios afnetworking ios6 afnetworking-2

17
推荐指数
1
解决办法
3万
查看次数

AFNetworking - 不缓存响应

我正在使用此代码从服务器中提取一个简单的JSON提要:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];

[manager GET:kDataUrl parameters:nil
 success:^(AFHTTPRequestOperation *operation, id responseObject) {
     NSLog(@"response: %@", responseObject);
 }
 failure:^(AFHTTPRequestOperation *operation, NSError *error) {
     NSLog(@"JSON DataError: %@", error);
 }];
Run Code Online (Sandbox Code Playgroud)

有用.但是,在我更改kDataUrl上的JSON文件并验证是否在浏览器中进行了更改后,当我再次运行应用程序时,我仍然得到之前的响应.

似乎AFNetworking以某种方式缓存了旧的响应.我不想要这种行为.我想下载当前的Feed.是否需要设置一些设置或参数来关闭缓存?

json caching ios afnetworking afnetworking-2

17
推荐指数
2
解决办法
2万
查看次数

"pod update"不会更新到最新版本

这是我在项目中使用的podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

pod 'AFNetworking', '~> 2.0'
pod 'GoogleMaps'
pod 'MONActivityIndicatorView'
pod 'NYXImagesKit'
pod 'MagicalRecord'
pod 'FBSDKCoreKit'
pod 'FBSDKShareKit'
pod 'FBSDKLoginKit'
pod 'Countly'
Run Code Online (Sandbox Code Playgroud)

问题是cocoapods 0.39正在将AFNetworking更新为2.5.4版,这是错误的.最新版本是2.6.3另外facebook SDK更新到4.4(最新版本是4.8)等.

我试图删除Pods文件夹和.lock文件,但没有帮助

还试图清理cocoapods缓存但没有帮助:

MACMINI:myproject myusername$ pod cache clean --all
MACMINI:myproject myusername$ pod update
Update all pods
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.5.4)
Installing Bolts (1.2.0)
Installing Countly (15.06.01)
Installing FBSDKCoreKit (4.4.0)
Installing FBSDKLoginKit (4.4.0)
Installing FBSDKShareKit (4.4.0)
Installing GoogleMaps (1.10.1)
Installing MONActivityIndicatorView (0.0.3)
Installing MagicalRecord (2.3.0) …
Run Code Online (Sandbox Code Playgroud)

ios cocoapods afnetworking-2

15
推荐指数
4
解决办法
1万
查看次数