Ios 志愿者符合API目标C

Ios 志愿者符合API目标C,ios,objective-c,iphone,http,afnetworking,Ios,Objective C,Iphone,Http,Afnetworking,我正在使用AFNetworking在志愿者匹配API上执行web请求。当我执行请求时,我收到一个200代码,但是我没有收到响应。以下是一个典型的志愿者匹配请求: GET /api/call?action=helloWorld&query=... HTTP/1.1 Host: www.volunteermatch.org Accept-Charset: UTF-8 Content-Type: application/json Authorization: WSSE profile="Use

我正在使用AFNetworking在志愿者匹配API上执行web请求。当我执行请求时,我收到一个200代码,但是我没有收到响应。以下是一个典型的志愿者匹配请求:

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"
是扩展文档

以下是我提出请求时使用的代码:

 // 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);
    }];
以下是我得到的答复:

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)

尝试按照指南集成
AFNetworking
最新版本2.0,不要忘记添加
AFSecurityPolicy.h
AFSecurityPolicy.m
文件。这将支持https:请求。

您不应该先序列化请求,然后添加新的头。头文件不会以这种方式结束(序列化)请求。
如果您将其反转,您可能会很好。

我正在使用一种常见的AFWS调用方法。 用途:

呼叫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
}];
添加两种方法: 这两种方法是通用的,您可以使用NSObject类在整个项目中使用这些通用方法。 还加 //定义错误代码,如

定义KDEFaultErrorCode12345 及 //在下面的方法中设置标题(如果需要,请删除)

关于任何问题和更多细节


更新
----------使用AF3.0进行迁移---------
请将您的AFN-2.0迁移到3.0,并做一些小改动

我将代码更新为您所说的,我已在原始问题中提供了它,但我仍然没有收到任何响应当我执行这些请求时,这是我收到的错误此错误
由于未捕获的异常“NSInvalidArgumentException”终止应用程序,原因:***-[\uu NSPlaceholderDictionary initWithObjects:forKeys:count:]:尝试从对象[0]插入nil对象。
好的,请在Poster或Rest客户端中尝试此Ws。响应是否正确。我认为响应包含HTMl元素。请检查并回复我。我已测试,没有从Ws端设置任何响应。请添加成功和失败,如{“success”:1}或{“success”:0}@prnk28你好,朋友,我不明白你面临的问题在哪里?@VvkAghera我们可以将它用作常见的NSObject类吗?你是否尝试在应用程序之外发出相同的请求?尝试使用外部工具(例如)检查响应中是否确实包含预期的正文。
- (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);
    }
}];}
- (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);
    }
}];}