如何从 Swift 3 上的响应字符串中检索标题字段?
Posted
技术标签:
【中文标题】如何从 Swift 3 上的响应字符串中检索标题字段?【英文标题】:How to retrieve header fields from a response string on Swift 3? 【发布时间】:2017-06-13 05:43:51 【问题描述】:我正在使用 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.response
吗?你得到了什么?
【参考方案1】:
您可以使用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)
【讨论】:
以上是关于如何从 Swift 3 上的响应字符串中检索标题字段?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Swift 类中检索目标 C 类中的 Userdefault?
如何保存响应 JSON 数组并在 swift 中使用用户默认值进行检索
如何从 Cloud Firestore 上的对象中检索值?迅速