如何从Swift 3上的响应字符串中检索头字段?

时间:2017-06-13 05:43:51

标签: ios swift3 alamofire

我正在使用Swift 3和Alamofire进行服务器调用。这是我的代码

let headers: HTTPHeaders = [
        "Accept": "application/json",
        "Content-Type": "application/json"
    ]

    Alamofire.request(
        url,
        method: .post,
        parameters: parameters,
        headers: headers)
        .responseString{ response in
            switch response.result {
            case .success(let value):
                print("response headerfields ", response.response?.allHeaderFields ?? "no headerfields")
                //completionHandler(value as? NSDictionary, nil)
            case .failure(let error):
                print("signin_post error: ", error)
                completionHandler(nil, error)
            }
    }

如何从上面的响应中正确获取标题字段?我得到了我的回复结果的成功,但就是这样。我有一个用Objective-c编写的代码,它正常工作。

[manager POST:url parameters:parameters progress:nil success:^(NSURLSessionTask *task, id responseObject) {
        NSLog(@"signInWithUserName Success JSON: %@", responseObject);

        if ([task.response isKindOfClass:[NSHTTPURLResponse class]]) {
            NSHTTPURLResponse *r = (NSHTTPURLResponse *)task.response;
            NSString *responsString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

            if(responsString != nil){
                NSString *authToken = [[r allHeaderFields] valueForKey:XAUTHTOKEN];
                NSLog(@"X-AUTH-TOKEN %@ ", authToken);

            //....

如果有人可以指导我如何使用Swift 3,我将非常感激。

1 个答案:

答案 0 :(得分:0)

您可以使用response.request.allHTTPHeaderFields从alamofire响应对象获取标头。 试试这个,

Alamofire.request(
        url,
        method: .post,
        parameters: parameters,
        headers: headers)
        .responseString{ response in
            switch response.result {
            case .success(let value):
                print("response headerfields \(response.request?.allHTTPHeaderFields)")
                //completionHandler(value as? NSDictionary, nil)
            case .failure(let error):
                print("signin_post error: ", error)
                completionHandler(nil, error)
            }
    }
相关问题