如何使用IOS中的参数调用应用程序中的Web服务? [关闭]

Posted

技术标签:

【中文标题】如何使用IOS中的参数调用应用程序中的Web服务? [关闭]【英文标题】:How to call Web services in application using parameters in IOS? [closed] 【发布时间】:2016-03-16 06:36:18 【问题描述】:

我已经给出了一个 url(http://xxxxxxxxx/login.php) 和两个参数(用户名和密码)来在应用程序中使用和调用这些服务,以及响应代码:成功:1 未找到用户&成功:0 – 成功。 我必须使用用户名和密码创建一个登录页面,如果它们匹配,那么用户应该移动到下一页,对如何启动代码有点困惑。任何人都可以帮助我。请让我知道您拥有的任何示例的代码。

【问题讨论】:

你做了什么努力,有没有尝试过? 询问“我从哪里开始”的问题通常过于宽泛,不适合本网站。人们有自己解决问题的方法,因此不可能有正确的答案。好好阅读Where to Start,然后写下你的帖子。 你所做的很不安全,希望这只是理论上的讨论,而不是真正的实现。 【参考方案1】:

试试这样的:

NSString *stringUrl = [NSString stringWithFormat:@"http://xxxxxxxxx/login.php?Username=%@&Password=%@",YouruserName, Yourpassword];

创建 NSURLConnection 并在完成块中获得响应

NSURL *url = [NSURL URLWithString:stringUrl];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response,
                                               NSData *data, NSError *connectionError)

      if (data.length > 0 && connectionError == nil)
      
         NSDictionary *dicYourResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];   
                                       
];

【讨论】:

【参考方案2】:

通过使用 NSURLSession,你可以在登录按钮操作上调用这个方法--

 -(void)login
    


        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
        NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
        NSURL *url = [NSURL URLWithString:@"http://www.example.com/pm/api/login"];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                               cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                           timeoutInterval:60.0];

      [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];


        [request addValue:@"*/*" forHTTPHeaderField:@"Accept"];

        [request setHTTPMethod:@"POST"];

        NSString *mapData = [NSString stringWithFormat:@"username=admin&password=testing&api_key=bf45c093e542f057c123ae7d6"];

           NSData *postData = [mapData dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

        [request setHTTPBody:postData];


        NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) 

            if(error == nil)
            

                NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];


                NSError *error = nil;
                NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
            if(error!=nil)
            
                NSLog(@"error = %@",error);

            

            dispatch_async(dispatch_get_main_queue(), ^
                [self checkUserSuccessfulLogin:json];
            );
        
        else

            NSLog(@"Error : %@",error.description);

        


    ];


    [postDataTask resume];


- (void)checkUserSuccessfulLogin:(id)json

  //  NSError *error;
   NSDictionary *dictionary = (NSDictionary *)json;


    if ([[dictionary allKeys] containsObject:@"login"])
    
        if ([[dictionary objectForKey:@"login"] boolValue])
        

            if(checkBoxSelected == YES)
            
                NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
                NSString* textField1Text = usernameField.text;
                [defaults setObject:textField1Text forKey:@"textField1Text"];

                NSString *textField2Text = passwordField.text;
                [defaults setObject:textField2Text forKey:@"textField2Text"];
                [defaults synchronize];
            
            NSString *strID = [[NSUserDefaults standardUserDefaults] stringForKey:@"textField1Text"];
            NSString *strPWD = [[NSUserDefaults standardUserDefaults] stringForKey:@"textField2Text"];

            [[NSUserDefaults standardUserDefaults] setValue:[dictionary objectForKey:@"user_id"] forKey:@"CurrentUserLoggedIn"];
          NSString *strUser = [[NSUserDefaults standardUserDefaults] stringForKey:@"CurrentUserLoggedIn"];

            [[NSUserDefaults standardUserDefaults]synchronize];
            [self saveLoginFileToDocDir:dictionary];


            ItemManagement *i = [[ItemManagement alloc]init];
            [self.navigationController pushViewController:i animated:YES];

        
        else
        
            NSLog(@"Unsuccessful, Try again.");
            UIAlertView *alertLogin = [[UIAlertView alloc]initWithTitle:@"Error" message:@"Wrong Username Or Password" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:nil];
            [alertLogin show];
        
    





- (void)saveLoginFileToDocDir:(NSDictionary *)dictionary

    NSArray *pListpaths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *pListdocumentsDirectory = [pListpaths objectAtIndex:0];
    NSString *path = [pListdocumentsDirectory stringByAppendingPathComponent:@"Login.plist"];

    BOOL flag = [dictionary writeToFile:path atomically:true];

    if (flag)
    
        NSLog(@"Saved");
    
    else
    
        NSLog(@"Not Saved");
    


【讨论】:

以上是关于如何使用IOS中的参数调用应用程序中的Web服务? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 如何使用 phoneGap / Cordova 中的参数调用 writeJavascript

在iOS中的后台任务中调用Javascript函数

ios+php中的json解析

有没有办法使用 Frida 或任何其他工具通过您自己的参数调用 IOS 应用程序中的方法?

什么是通过iOS中的Web服务url传递带有xml标签的参数的更好方法,目标c

使用交互式推送通知 iOS 8 调用 Web 服务