Volunteermatch API Objective C

Estoy utilizando AFNetworking para realizar una request web en la API VolunteerMatch. Cuando realizo la request recibo un código 200, pero no recibo respuesta. Así es como se ve una request típica de VolunteerMatch:

GET /api/call?action=helloWorld&query=... HTTP/1.1 Host: www.volunteermatch.org Accept-Charset: UTF-8 Content-Type: application/json Authorization: WSSE profile="UsernameToken" X-WSSE: UsernameToken Username="acme", PasswordDigest="quR/EWLAV4xLf9Zqyw4pDmfV9OY=", Nonce="d36e316282959a9ed4c89851497a717f", Created="2003-12-15T14:43:07-0700" 

Aquí está la documentation extendida.

Aquí está mi código que estoy usando para hacer mi request:

  // Create parameters NSDictionary* param = @{ @"action":@"helloWorld", @"query":@"{\"name\":\"john\"}" }; // Create Manager AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; // Add Headers [manager.requestSerializer setValue:@"WWSE profile=\"UsernameToken\"" forHTTPHeaderField:@"Authorization"]; [manager.requestSerializer setValue:[CocoaWSSE headerWithUsername:@"XXXXX" password:@"XXXXXXXXXXX"] forHTTPHeaderField:@"X-WSSE"]; // Perform Request [manager GET:@"http://www.volunteermatch.org/api/call" parameters:param success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) { NSLog(@"HTTP Request URL: %@", [operation.request URL]); NSLog(@"HTTP Response Status Code: %ld", [operation.response statusCode]); NSLog(@"HTTP Response Body: %@", responseObject); } failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) { NSLog(@"HTTP Request failed: %@", error); }]; 

Aquí está la respuesta que recibo:

 2015-11-17 16:53:36.476 XXXXXX[85280:5969811] HTTP Response Status Code: 200 2015-11-17 16:53:36.476 XXXXXX[85280:5969811] HTTP Response Body: (null) 

Estoy usando uno de los methods más comunes para AFNetworking WS Calling. Usos:

Llamar a WS:

 NSDictionary* param = @{ @"action":@"helloWorld", @"query":@"{\"name\":\"john\"}" }; [self requestWithUrlString:@"URL" parmeters:paramDictionary success:^(NSDictionary *response) { //code For Success } failure:^(NSError *error) { // code for WS Responce failure }]; 

Agregue dos methods: estos dos methods son comunes, puede usar este método común en todo el proyecto utilizando la class NSObject. también agregue // definir el código de error como …

define kDefaultErrorCode 12345

 - (void)requestWithUrlString:(NSString *)stUrl parmeters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure { [self requestWithUrl:stUrl parmeters:parameters success:^(NSDictionary *response) { if([[response objectForKey:@"success"] boolValue]) { if(success) { success(response); } } else { NSError *error = [NSError errorWithDomain:@"Error" code:kDefaultErrorCode userInfo:@{NSLocalizedDescriptionKey:[response objectForKey:@"message"]}]; if(failure) { failure(error); } } } failure:^(NSError *error) { if(failure) { failure(error); } }];} 

y // Establecer encabezados en el siguiente método (si es necesario, elimínelo de otra manera)

 - (void)requestWithUrl:(NSString *)stUrl parmeters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *))failure { AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]]; [manager.requestSerializer setValue:@"WWSE profile=\"UsernameToken\"" forHTTPHeaderField:@"Authorization"]; [manager GET:stUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { if([responseObject isKindOfClass:[NSDictionary class]]) { if(success) { success(responseObject); } } else { NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; if(success) { success(response); } } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); if(failure) { failure(error); } }];} 

Para cualquier problema y más detalles , visite AFNetworking.


ACTUALIZAR
———- migrando con AFNetworking 3.0 ——— migra tu AFN-2.0 a 3.0 con algunos pequeños cambios, por favor haz clic aquí AFN 3.0

Intente integrar la última versión 2.0 de AFNetworking tal como está guiada aquí y no olvide agregar el file AFSecurityPolicy.h , AFSecurityPolicy.m . Esto admitirá https: requestes.

Primero no debe serializar la request y agregar nuevos encabezados. Los encabezados no terminarán en la (serialization de) la request de esa manera. Probablemente esté bien si lo invierte.