如何使用 AFN 3.0 保存响应并将该响应中的特定参数发送给服务器?

How to save response and send specific parameter in that response to server using AFN 3.0?

我打算用AFNetworking 3.0

在我的第一个视图中,当我输入手机号码并单击提交按钮,然后它发送到服务器并从服务器获得响应,在该响应中,假设我得到 2 个参数(如 id:xx、token:xxxxx,).

现在我的问题是-

当我从服务器收到响应时,我想继续第二个视图,当我点击登录按钮时,我只想发送我从之前的响应中获得的令牌(不是 ID)。我怎么才能只接受那个从以前的视图中获取令牌并从当前视图中发送它。

我这样试过,但没有完成或无法正常工作。 我试着像这样保存响应数据:

 NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
 NSLog(@"responseData: %@", str);

并尝试发送第二个视图:

 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier]isEqualToString:@"loginsegue"])
       {
         loginViewController *lvc= [segue destinationViewController];
         lvc.str=_str;
       }
 }

AFNetworking 很好地将 JSON 数据转换为 iOS 中的 id 类型。您只需要根据您的回复进行转换即可。

一般可以这样做,例如

NSDictionary *response = (NSDictionary *)responseObject;
NSString *token = [response valueForKey:@"token"];
//Save token some where to use it later.

一旦你有了这个令牌,你就可以

  1. 将它存储在某个地方,可能是 NSUserDefaults(不推荐,但很简单)。
  2. 然后,每当您需要传递该令牌时,您应该获取它(无论您存储在何处),在我们的例子中 NSUserDefaults,并将其发送到服务器。

请注意:如果您的令牌每次都在变化,您可以临时存储它(可能是单例)并在需要时使用它。只要你可能在任何视图控制器中需要令牌,你就不应该将它传递给每个视图控制器。最好让它在全球范围内可用。