5

我对 iOS 编程相当陌生,尤其是在 Web 服务方面。我正在开发一个用于学术目的的应用程序,我需要与我的服务器通信,目前使用 AFNetworking2 和 Restler/php,在 GET 方法方面一切正常。但是我不能上传任何东西。

已经阅读了几个小时,在 github 支持站点、stackoverflow 中,几乎所有上传图片的示例/问题(并且有很多)都使用这一行:

AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://server"]]; 

我确实有一个客户端类,AFHTTPSessionManager 的子类,以及我的 sharedClient。但是所有示例都将此 AFHTTPClient 与 initWithURL 和其他类(如 AFJSONRequestOperation)一起使用,但我再也找不到了。

大多数情况下,它说我应该创建一个 AFHTTPClient 的单例子类,但我在任何地方都找不到它。有些链接甚至将我发送到官方 github 存储库,但它不再可用。所以我的问题是,我在哪里可以获得有关 AFHTTPClient 的更多信息,我应该使用它吗,谁能给我一个关于如何创建或至少了解其功能的教程。

干杯

4

3 回答 3

23

在 AFNetworking 2.0 中,AFHTTPClient 已被 AFHTTPRequestOperationManager / AFHTTPSessionManager 取代。我建议您参考他们在 git 中的示例。Git 克隆并在 XCode 中打开。它应该可以帮助你。那有最新的例子。

如果你想使用 AFHTTPClient 即 1.x 代码。这是分支的 git 链接。吊舱规格将是

pod 'AFNetworking', '~> 1.3.3'

在 2.0 AFNetworking 中,您可以像这样创建单例客户端。

界面

@interface AFAppDotNetAPIClient : AFHTTPSessionManager

+ (instancetype)sharedClient;

@end

执行

#import "AFAppDotNetAPIClient.h"

static NSString * const AFAppDotNetAPIBaseURLString = @"https://alpha-api.app.net/";

@implementation AFAppDotNetAPIClient

+ (instancetype)sharedClient {
    static AFAppDotNetAPIClient *_sharedClient = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedClient = [[AFAppDotNetAPIClient alloc] initWithBaseURL:[NSURL URLWithString:AFAppDotNetAPIBaseURLString]];
        [_sharedClient setSecurityPolicy:[AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey]];
    });

    return _sharedClient;
}

@end
于 2013-10-21T20:33:38.553 回答
2

这是解决方案,针对最新版本的 AFNetworking 进行了修改。

//sample PNG
NSData *imageData = UIImagePNGRepresentation([UIImage imageNamed:@"700k_image.png"]);
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:WEBSERVICE_IMAGEM_UPLOAD parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            [formData appendPartWithFileData:imageData name:@"image" fileName:@"image_name" mimeType:@"image/png"];
             } success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSLog(@"Success: %@", responseObject);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"Error: %@", error);
        }];
于 2013-10-21T23:03:05.340 回答
2

AFHTTPClient 是来自 AFNetworking 1.x 的类——https: //github.com/AFNetworking/AFNetworking/tree/1.x

AFNetworking 2.0 是一个相当新的库,所以没有太多关于它的教程,现在你仍然可以使用第一个版本,直到你觉得有时间学习 2.x))

希望有所帮助

于 2013-10-21T19:43:19.523 回答