2013-10-21 43 views
5

我对iOS编程相当陌生,特别是当涉及到web服务时。我正在为学术目的开发一个应用程序,并且我需要与我的服务器进行通信,目前使用AFNetworking2和Restler/php,当涉及到GET方法时,所有工作都可以使用。但我无法上传任何内容。AFNetworking AFHTTPClient类

在读了几个小时,在github上支持网站,计算器,几乎所有的例子/问题上传图片(并有很多)使用此行:

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

我有一个客户端类, AFHTTPSessionManager的子类,与我的sharedClient。但是所有示例都使用这个AFHTTPClient和initWithURL以及其他像AFJSONRequestOperation这样的类,我再也找不到它了。

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

干杯

+0

您是否需要跟踪进度? – Bot

+0

不,不是真的。上传成功后我只需要一些反馈。 –

回答

23

在AFNetworking 2.0 AFHTTPClient已取代AFHTTPRequestOperationManager/AFHTTPSessionManager。我建议你参考example in git by them。 Git克隆并在XCode中打开。它应该帮助你。这是最新的例子。

如果你想使用AFHTTPClient即1.x代码。这里是git link to the branch。该吊舱规范到这将是

荚“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 
+0

我没有检查他们的例子,它非常有帮助,但它没有任何上传方法,只有GET。您可以使用您的示例访问哪些内容,这一部分是我设法完成的,并且工作起来非常完美......我开始认为降级是唯一的选择。 –

+0

@布鲁诺检查此[示例](http://stackoverflow.com/questions/19261481/ios-image-upload-via-afnetworking-2-0?answertab =最旧的#tab-top) –

+0

仍然有一些问题在服务器端抓取图片,但至少我设法上传了一些代码,修改后的版本,谢谢! –

2

AFHTTPClient是AFNetworking 1.x的类 - https://github.com/AFNetworking/AFNetworking/tree/1.x

AFNetworking 2.0是相当新的图书馆,所以现在有没有关于它太多的教程,你可以,你还是第一个版本,直到你会觉得有时间来学习2.X))

希望帮助

+0

感谢队友,我正在使用一个教程......以及它与这个版本一起工作的一切;) – chemitaxis

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); 
     }];