我正在使用 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)
}
}