2017-03-31 3 views
1

누구든지 AFHTTPSessionOperation 내에서 티켓을 설정하는 방법을 알고 있습니까? 이 1.0AFHTTPSessionOperation 또는 AFHTTPSessionManager를 사용하여 티켓을 설정하는 방법은 무엇입니까?

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 내부에 저장되어 AFNetworking 프레임 워크를 사용하여 이전 호출입니다. self.myClient.ticket

그러나 AFNetworking 프레임 워크 3.1과 함께 AFHTTPSessionOperation을 사용하여 다음 호출에서이를 구현하는 방법을 잘 모르겠습니다.

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]; 

이 코드는 기본적으로 올바른 보이는 당신에게

답변

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가 등장 내 요청 헤더는 예상대로 :

enter image description here

내가 당신의 문제는 다른 곳에 달려있다 생각한다. 이 코드는 헤더를 ticket으로 설정합니다. 이것이 ticket을 설정할 수있는 올바른 장소인지 확인하십시오. 또한 ticket이 자신이 생각하는 것임을 확인하십시오.

+0

당신이 옳습니다! 문제는 내 티켓에서 나왔고 올바른 데이터가 없습니다. – Aviva