ios - 如何使用 nsjsonserilization 添加登录 api?

标签 ios objective-c iphone json nsurlconnection

我有这样的 api http://qa.networc.in:1336/api/users/app/login并希望在单击登录按钮时触发此 api。我需要匹配电子邮件和密码。

 - (void)viewDidLoad {
  [super viewDidLoad];
   name = [NSMutableArray new];

   [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
   NSURL *url =  [NSURL URLWithString:@"http://qa.networc.in:1336/api/users/app/login"];
   NSURLRequest *request= [NSURLRequest requestWithURL:url];
   [NSURLConnection connectionWithRequest:request delegate:self];

}

- (void)didReceiveMemoryWarning {
  [super didReceiveMemoryWarning];
}

-(void)connection:(NSURLConnection *)connection   didReceiveResponse:  (nonnull NSURLResponse *)response     {
  data = [[NSMutableData alloc] init];
  NSLog(@"Did receive response"); 
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData   *)theta {
  [data appendData:thedata];
   NSLog(@"daata");
}

-(void)connectionDidFinishLoading:(NSURLConnection  *)connection {
  [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
  name= [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError   *)error      {
     UIAlertView *errorview= [[UIAlertView alloc]initWithTitle:@"Error"       message:@"The download could not complete please make sure you're connected to internet" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles: nil];
    [errorview show];
     [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

- (IBAction)login:(id)sender    {


 }

最佳答案

第一步

在您的 .plist 中添加以下详细信息

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
 </dict>

第二步

- (IBAction)login:(id)sender    {




NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://qa.networc.in:1336/api/users/app/login"]];

NSURLSession *session = [NSURLSession sharedSession];
//  email": user_name, "password": password, "deviceToken":'testdata
NSString * params =[NSString stringWithFormat:@"email=%@&password=%@&deviceToken=testdata",yourEmailtextfield.text,yourpasswordtextfield.text];

request.HTTPMethod = @"POST";
request.HTTPBody =[params dataUsingEncoding:NSUTF8StringEncoding];


NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                        completionHandler:
                              ^(NSData *data, NSURLResponse *response, NSError *error) {
                                  // ...
                                   NSLog(@"Response:%@ %@\n", response, error);
                                  if(error == nil)
                                  {
                                      // use NSJSON Serlizeitaion and serlize your value
                                      NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
                                      NSLog(@"Data = %@",text);
                                  }
                              }];

[task resume];

}

有关其他信息,请参阅此 tutorial

关于ios - 如何使用 nsjsonserilization 添加登录 api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36836340/

相关文章:

iphone - 如何在 iPhone 中格式化最多 2 位小数的 double 值

ios - Xcode 12 启动模拟器非常慢

ios - Paypal 获取有关 redirect_url 的错误

ios - 合并两个 UIImages swift 4

objective-c - NSXMLParser vs TouchXML/KissXML 框架?

iphone - 在 iOS 中使用 mime 类型或 UTI 类型的内置图标

ios - 无法停止覆盖推送 View 的导航栏 - 为什么会这样?

ios - 在 XCode 6.1.1 中调试 EXC_BAD_INSTRUCTION 崩溃

ios - 下载的图像在文档目录中有零字节

ios - 在layoutSubviews中使用dispatch_once有什么问题吗?