提问人:Fabrizio L. 提问时间:6/7/2021 最后编辑:Fabrizio L. 更新时间:6/8/2021 访问量:55
使用目标 C 从响应调用服务器和 GET 令牌
Call a server and GET token from response with Objective C
问:
我正在为我的应用程序创建一个用户必须登录的视图。 所以我必须打电话给我的服务器 2 次:
- 第一次调用(使用 GET 方法)让我获得包含一个 cookie(名为 XSFR-TOKEN)的响应,我必须提取该 cookie 并在以后用于第二次调用。
- 第二个(使用 POST 方法)是一个调用,我必须在请求正文(JSON 中)发送几个参数(用户名、密码、client_id和之前获取的令牌)。此调用的响应会将我重定向到一个虚构的 URL。
当我在我的函数中进行第一次调用时,它工作成功,但我无法从 responseString 中提取并保存令牌以供以后使用。
我被困住了,因为我不知道如何继续。 谢谢你帮助我。
-(void) makeLoginRequest {
NSLog(@"LoginFirstStepViewController - makeLoginRequest");
// Preparing URL
NSString *loginURL = SELFBLUE_LOGIN_REDIRECT_OAUTH;
NSURL *url = [NSURL URLWithString:loginURL];
// Initialize the request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
// Set request method
[request setHTTPMethod: @"GET"];
NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error) {
NSLog(@"Error: %@",error);
NSString *errorMsg = error.userInfo[@"NSLocalizedDescription"];
errorMsg = (errorMsg) ? errorMsg:NSLocalizedString(@"unexpected_error", nil);
dispatch_async(dispatch_get_main_queue(), ^{
[self.view makeToast:errorMsg duration:4.0 position:CSToastPositionCenter];
});
return;
} else {
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Response: %@", responseString);
}
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"makeLoginRequest: %@", response);
// Status code 200 allows me to continue, otherwise I had an error.
if (httpResponse.statusCode !=200) {
NSLog(@"%ld", (long)httpResponse.statusCode);
[self showMessageAndUnwindForHttpError:httpResponse.statusCode];
return;
}
//EXTRACT THE TOKEN
//WRITE CODE FOT POST REQUEST
}];
[task resume];
}
答: 暂无答案
评论
NSLog(@"Response: %@", responseString);
error.userInfo[@"NSLocalizedDescription"]
error.localizedDescription
NSLocalizedDescriptionKey
@"NSLocalizedDescription"