【问题标题】:How to set ticket with AFHTTPSessionOperation or AFHTTPSessionManager?如何使用 AFHTTPSessionOperation 或 AFHTTPSessionManager 设置票证?
【发布时间】:2017-03-31 21:21:08
【问题描述】:

有人知道如何在 AFHTTPSessionOperation 中设置票证吗? 这是之前使用 AFNetworking 框架 1.0 进行的调用

NSURLRequest* request = [self.myClient requestWithMethod:@"POST" path:[NSString stringWithFormat:@"%@/%@", controller, action] parameters:parameters];
AFHTTPRequestOperation* operation = [self.myClient HTTPRequestOperationWithRequest:request success:success failure:failure];
[self.mirrorClient enqueueHTTPRequestOperation:operation];

票证存储在 self.myClient 中。 self.myClient.ticket

但我不确定如何在以下调用中使用 AFHTTPSessionOperation 和 AFNetworking 框架 3.1 来实现它。

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
AFHTTPRequestSerializer <AFURLRequestSerialization> * requestSerializer = manager.requestSerializer;
[requestSerializer  setValue:[NSString stringWithFormat:@"%@", self.myClient.ticket] forHTTPHeaderField:@"Authorization"];

NSOperation *operation = [AFHTTPSessionOperation operationWithManager:manager HTTPMethod:@"POST" 
URLString:urlString parameters:parameters 
uploadProgress:nil downloadProgress: nil 
success:success failure:failure];

谢谢

【问题讨论】:

    标签: afnetworking-3


    【解决方案1】:

    这段代码看起来基本正确。您可以稍微简化requestSerializer 配置,我可能不会为每个请求都实例化一个新会话,但以下对我来说很好:

    - (void)performRequest:(NSString *)urlString
                parameters:(id)parameters
                   success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success
                   failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure {
    
        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        [manager.requestSerializer setValue:self.myClient.ticket forHTTPHeaderField:@"Authorization"];
    
        NSOperation *operation = [AFHTTPSessionOperation operationWithManager:manager
                                                                   HTTPMethod:@"POST"
                                                                    URLString:urlString
                                                                   parameters:parameters
                                                               uploadProgress:nil
                                                             downloadProgress:nil
                                                                      success:success
                                                                      failure:failure];
        [self.queue addOperation:operation];
    }
    

    我在Charles看了,票12345678出现在我的请求头中,不出所料:

    我怀疑您的问题出在其他地方。此代码确实将Authorization 标头设置为ticket。确保这是设置ticket 的正确位置。另外,请确保 ticket 是您认为的那样。

    【讨论】:

    • 你是对的!问题出在我的票上,它没有正确的数据。
    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多