Volunteermatch API Objective C

Estoy usando AFNetworking para realizar una solicitud web en la API de VolunteerMatch. Cuando realizo la solicitud, recibo un código de 200, sin embargo, no recibo una respuesta. Así es cómo se ve una solicitud 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 documentación extendida.

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

  // 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 un método común para AFNetworking WS Calling. Usos:

Llame 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 métodos: estos dos métodos son comunes, puede usar estos métodos comunes en todo el proyecto usando la clase NSObject. también agregue // definir 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 método de abajo (si es necesario, de lo contrario eliminar)

 - (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 ——— migre su AFN-2.0 a 3.0 con algunos pequeños cambios, por favor chaquea aquí AFN 3.0

Intente integrar la última versión 2.0 de AFNetworking como se AFNetworking aquí y no olvide agregar AFSecurityPolicy.h , archivo AFSecurityPolicy.m . Esto admitirá https: solicitudes.

Primero no debe serializar la solicitud y luego agregar nuevos encabezados. Los encabezados no terminarán en la (serialización) de la solicitud de esa manera. Probablemente estés bien si reviertes eso.