2013-10-21 16 views
5

Ich bin ziemlich neu in der iOS-Programmierung, vor allem wenn es um Webservices geht. Ich entwickle eine App für akademische Zwecke, und ich muss mit meinem Server kommunizieren, derzeit mit AFNetworking2 und Restler/php, alles funktioniert, wenn es um GET-Methoden geht. Aber ich kann nichts hochladen.AFNetworking AFHTTPClient Klasse

seit Stunden zu lesen, in Github-Support-Site, Stackoverflow, so ziemlich alle Beispiele/Fragen zum Hochladen von Bildern (und es gibt eine Menge), um diese Zeile verwenden:

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

Ich habe eine Client-Klasse, Unterklasse von AFFHTTPSessionManager, mit meinem sharedClient. Aber alle Beispiele verwenden diesen AFHTTPClient mit initWithURL und anderen Klassen wie AFJSONRequestOperation, die ich nicht mehr finden kann.

Meistens sagt es ich sollte ein Singleton, Unterklasse von AFHTTPClient erstellen, aber ich kann es nirgendwo finden. Einige Links schicken mich sogar zum offiziellen Github-Repository, aber es ist nicht mehr verfügbar. Also meine Frage ist, wo kann ich mehr Informationen über AFHTTPClient bekommen, sollte ich es verwenden, kann mir jemand ein Tutorial zeigen, wie man es erstellt oder zumindest seine Funktionalität versteht.

Prost

+0

Müssen Sie den Fortschritt verfolgen? – Bot

+0

Nein, nicht wirklich. Ich brauche nur ein Feedback nach einem erfolgreichen Upload. –

Antwort

23

In AFNetworking 2.0 die AFHTTPClient wurde von AFHTTPRequestOperationManager/AFHTTPSessionManager ersetzt. Ich würde vorschlagen, dass Sie sich auf die example in git by them beziehen. Git klonen und in XCode öffnen. Es sollte dir helfen. Das hat das aktuellste Beispiel.

Wenn Sie AFHTTPClient verwenden möchten, d. H. 1.x-Code. Hier ist die git link to the branch. Die Schote spec, dass

pod 'AFNetworking' sein würde, '~> 1.3.3'

In 2.0 AFNetworking können Sie einen Singleton-Client wie diese erstellen.

Schnittstelle

@interface AFAppDotNetAPIClient : AFHTTPSessionManager 

+ (instancetype)sharedClient; 

@end 

Implementierung

#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

Ich habe ihr Beispiel überprüft, es ist sehr hilfreich, aber es hat keine Upload-Methoden, nur GET. Auf das ist es, was Sie mit Ihrem Beispiel erreichen können, den Teil, den ich geschafft habe und der perfekt funktioniert ... Ich fange an zu denken, dass Downgrade die einzige Option ist. –

+0

@Bruno Überprüfen Sie dies [Beispiel] (http://stackoverflow.com/questions/19261481/ios-image-upload-via-afnetworking-2-0?answertab = Älteste # tab-top) –

+0

Ich habe immer noch Probleme, das Bild auf der Serverseite zu packen, aber immerhin habe ich es geschafft, etwas mit einer modifizierten Version dieses Codes hochzuladen, danke! –

2

AFHTTPClient ist die Klasse von AFNetworking 1.x - https://github.com/AFNetworking/AFNetworking/tree/1.x

AFNetworking 2.0 ziemlich neue Bibliothek ist, so ist es nicht zu viele Tutorien darüber, denn jetzt können Sie immer noch erste Version, bis Sie fühlen, dass es Zeit ist, 2.x zu lernen))

Hoffnung hilft

+0

Danke Kumpel, ich benutze ein Tutorial ... und alles, was es mit dieser Version funktioniert;) – chemitaxis

2

Hier ist die Lösung, für die neueste Version von AFNetworking geändert.

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