我是iOS应用程序开发的新手。我将使用AFNetworking 3.0。在我进入手机号码的第一个视图。然后单击提交按钮然后它与服务器连接,我从服务器得到以下响应:
-(void)serverconnection
{
NSString *Loginurl = [NSString stringWithFormat:@"https://24x7tracker.com/busservices/School/DriverPreLogin"];
NSDictionary *params = @{@"mobile":self.phonenumber.text,
@"archive":@"schooldb1"
};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
AFSecurityPolicy* policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
[policy setValidatesDomainName:NO];
[policy setAllowInvalidCertificates:YES];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/html",nil];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/plain",nil];
[manager POST:Loginurl parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"Json: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
[self getdata:responseObject];
NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"responseData: %@", str);
[self performSegueWithIdentifier:@"loginsegue" sender:self];
}
failure:^(NSURLSessionTask *operation, NSError *error)
{
NSLog(@"Error: %@", error);
UIAlertController *Erroralert= [UIAlertController
alertControllerWithTitle:@" Network Connection Failed!!"
message:@"Please try again"
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:Erroralert animated:YES completion:nil];
UIAlertAction* yesButton = [UIAlertAction
actionWithTitle:@"Ok"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
[self resignFirstResponder];
[Erroralert dismissViewControllerAnimated:YES completion:nil];
}];
[Erroralert addAction: yesButton];
}];
}
-(void)getdata:(NSData *)data
{}
现在我的问题是,如何从responseData中仅获取该令牌并从下一个视图将其发送到服务器。请帮帮我。
注意:每当我们每次调用服务令牌时都会改变。
我的代码是:
var dt = [{"text":"DC=test,DC=in","children":[;
var cnt = spl.length - 1;
for (q = 0; q < cnt; q++) {
if (spl[q].startsWith(","))
dt += {"text":" + spl[q].split(",")[1] + "},;
else
dt += {"text":" + spl[q].split(",")[0] + "},;
}
dt += ]}];
答案 0 :(得分:1)
你可以用两种方式做到这一点
<强> NSUserDefault 强>
// NSArray *temp = (NSArray *)responseObject;
NSError *error;
NSArray *temp = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];
[[NSUserDefaults standardUserDefaults] setObject:[[temp objectAtIndex:0] valueForKey:@"token"] forKey:@"token"];
[self performSegueWithIdentifier:@"loginsegue" sender:self];
<强>提取强>
用于检索String
中的NSUserDefaults
,您可以直接使用objectForKey
NSString *token = [[NSUserDefaults standardUserDefaults]objectForKey:@"token"];
第一页创建一个全局值,用于将对象存储在字符串
中@property (strong, nonatomic) NSString *tokenString;
对响应对象进行serilize并将其存储在您需要的全局值中
NSError *error;
NSArray *temp = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];
// in this line we assingn the current value to global value
tokenString = [[temp objectAtIndex:0] valueForKey:@"token"];
[self performSegueWithIdentifier:@"loginsegue" sender:self];
在该目标视图控制器上创建一个全局值以传递当前字符串
@property (strong, nonatomic) NSString *fetchtokenString;
在第一个VC上,prepareForSegue方法将全球化值传递给第二页
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
secondViewController *vc = segue.destinationViewController;
// pass the current object to second page value
vc.fetchtokenString = tokenString;
最后第二个VC你可以在viewDidload页面上获得值
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSLog (@"token value ==%@",fetchtokenString);
}
答案 1 :(得分:0)
您可以按照以下操作
像这样解析你的回复
variable
将您的令牌放在一个全局NSString *token = [json objectForkey:@"token"];
假设
UIViewController
当您按下UIViewController
时,请将此值设置为下一个property
的属性。为此,您需要在下一个NSString
中创建一个UIViewController
类型@property(nonatomic, copy) NSString *token;
,例如:
UIViewController
首先在UIViewControler
中访问该属性。
在推送下一个sectionViewControllerObject.token = token //variable of first UIViewController
import bs4
import requests
source = requests.get('https://www.youtube.com/feed/subscriptions')
sourceSoup = bs4.BeautifulSoup(source.text,'html.parser')
sourceSoup.select('#grid-319397 > li:nth-child(1) > div > div.yt-lockup-dismissable > div.yt-lockup-content > h3')
[]
答案 2 :(得分:0)
@ Anbu.Karthik如果您想将第一个视图控制器中的值发送到第二个视图控制器,那么您可以通过多种方式使用segue
或delegate
或{{1} }。
我正在使用 swift 进行只获取令牌数据,只需使用目标C尝试此操作。
NSnotification