0

我有一个 iOS + Rails 3.1 应用程序,我正在使用AFIncrementalStore进行客户端-服务器通信。

我已经根据本教程在我的 Rails 服务器上实现了令牌身份验证:http: //matteomelani.wordpress.com/2011/10/17/authentication-for-mobile-devices/

我现在想&auth_token=XXXXXXXX在从客户端到服务器的每个请求中包含 POST 请求。我该怎么做?我没有在这篇相关文章中找到解决方案:Using AFIncrementalStore with an Auth token

更新:这是我的第一次代码尝试,但似乎没有发送auth_token

(在我的AFIncrementalStoreHTTPClient子类中)

- (NSMutableURLRequest *)requestForFetchRequest:(NSFetchRequest *)fetchRequest withContext:(NSManagedObjectContext *)context {
    NSMutableURLRequest *request = [[super requestForFetchRequest:fetchRequest withContext:context] mutableCopy];
    NSMutableString *requestBody = [[NSMutableString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding];
    [requestBody appendFormat:@"&%@=%@", @"auth_token", @"xkT2eqqdoNp5y4vQy7xA"];
    [request setHTTPBody:[requestBody dataUsingEncoding:NSUTF8StringEncoding]];
    return request;
}
4

1 回答 1

1

更新:我略读了您的问题(对不起!),下面的示例代码适用于常规 AFHTTPClient,但不适用于 AFIncrementalStore。但是,相同的基本方法将起作用,并且此答案中的示例代码应该为您指明正确的方向。


您不能&auth_token=whatever在所有情况下都附加到 HTTP 正文的末尾。

您可能希望使用以下内容覆盖您的getPath...andpostPath...方法:

- (void)getPath:(NSString *)path 
     parameters:(NSDictionary *)parameters 
        success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
        failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
    if (parameters) {
        // Make a mutable copy and add the "token" parameter to the dictionary
        NSMutableDictionary *mutableParams = [parameters mutableCopy];
        [mutableParams setObject:@"whatever" forKey:@"token"];
        parameters = [NSDictionary dictionaryWithDictionary:mutableParams];
    } else {
        parameters = @{@"token" : @"whatever"};
    }

    [super getPath:path parameters:parameters success:success failure:failure];
}

这种方法将允许 AFNetworking 根据您的特定请求和编码设置对您的参数进行适当的编码。

如果您正在滚动自己的AFHTTPRequestOperation对象而不是使用方便的方法(您可能不是),只需确保在创建 NSURLRequestparameters 之前包含令牌,如下所示:

NSURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:parameters];
于 2013-06-17T21:31:37.787 回答