afnetworking 3.0 Migration: comment POSTER avec les en-têtes HTTP et les Corps

Je suis en train de faire une requête POST qui a HTTPHeader des Champs et d'un corps HTTP pour l'API youtube.

Précédemment dans la version 2.0 de AFNetworking, j'ai utilisé de faire de cette façon qui ont travaillé:

NSDictionary *parameters = @{@"snippet": @{@"textOriginal":self.commentToPost.text,@"parentId":self.commentReplyingTo.commentId}};

NSString *url = [NSString stringWithFormat:@"https://www.googleapis.com/youtube/v3/comments?part=snippet&access_token=%@",[[LoginSingleton sharedInstance] getaccesstoken]];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters
   options:0
     error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

//And finally, add it to HTTP body and job done.
[request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];



AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer.timeoutInterval=[[[NSUserDefaults standardUserDefaults] valueForKey:@"timeoutInterval"] longValue];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
AFHTTPRequestOperation *operation = [manager HTTPRequestOperationWithRequest:request progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"Reply JSON: %@", responseObject);


    }
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@, %@, %@, %@, %@", error, operation.responseObject, operation.responseData, operation.responseString, operation.request);

}];
[operation start];

La migration docs pour la version 3.0 remplace AFHTTPRequestOperationManager avec AFHTTPSessionManager
Cependant, je n'arrive pas à trouver un HTTPRequestOperationWithRequest méthode pour la AFHTTPSessionManager.

J'ai essayé d'utiliser le constructingBodyWithBlock mais cela ne fonctionne pas, peut-être parce que je ne suis pas la faire correctement.

C'est ce que j'ai à ce jour qui ne fonctionne pas:

NSDictionary *body = @{@"snippet": @{@"topLevelComment":@{@"snippet":@{@"textOriginal":self.commentToPost.text}},@"videoId":self.videoIdPostingOn}};

NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:body
   options:0
     error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
serializer.timeoutInterval= [[[NSUserDefaults standardUserDefaults] valueForKey:@"timeoutInterval"] longValue];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];


[manager POST:[NSString stringWithFormat:@"https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&access_token=%@",[[LoginSingleton sharedInstance] getaccesstoken]] parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

    [formData appendPartWithHeaders:nil body:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];

}  progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    NSLog(@"Reply JSON: %@", responseObject);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"Error: %@, %@, %@, %@, %@", error, operation.responseObject, operation.responseData, operation.responseString, operation.request);

}];
  • puis-je connaître votre corps de message que tu veux poster des url et de le u r de la frappe. c'est sûr que je peux donner u exemple de code de travail.
  • Merci pour la réponse! C'est dans mon post au dessus. Le "corps" du dictionnaire est ce que je veux poster. Auparavant, je voudrais la convertir en une Chaîne JSON et puis le dataUsingEncoding qui, je le défini comme le HTTPBody. Le Code est inclus ci-dessus.
  • besoin d'une aide, il permettrait d'économiser mon temps il suffit de faire un exemple de code de afnetwork avec 2.0 et uplaod dropbox ou github. si u pourrait faire qu'il serait assez bon. J'ai pu voir certains de jeton d'authentification. il me faudrait comprendre votre scénario d'abord, plutôt que u pu faire un exemple de travail en 2.0. hope u comprendre
  • avez-vous un youtube api clé? Si oui, alors je peux le faire
  • non je n'ai pas cette clé, vous pourriez donne ur de travail secondaire clés. plus tard, vous pouvez le changer
InformationsquelleAutor Pranoy C | 2016-01-01