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



我正在使用 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 做到这一点,我将不胜感激。

您可以使用

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)
            }
    }

最新更新