我正在使用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,我将非常感激。
答案 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)
}
}