iOS开发中 get请求、post请求

来源:互联网 发布:福建师大网络教育专业 编辑:程序博客网 时间:2024/05/18 03:41
<span style="font-size:24px;color:#FF0000;">get请求</span>/** *  登录逻辑 */- (IBAction)login{    // 1.表单验证(输入验证)    NSString *username = self.usernameField.text;    if (username.length == 0) { // 没有输入用户名        [MBProgressHUD showError:@"请输入用户名"];        return;    }        NSString *pwd = self.pwdField.text;    if (pwd.length == 0) { // 没有输入密码        [MBProgressHUD showError:@"请输入密码"];        return;    }        // 弹框    [MBProgressHUD showMessage:@"正在拼命登录中..."];        // 2.发送请求给服务器(带上帐号和密码)    // GET请求:请求行\请求头        // 2.1.设置请求路径    NSString *urlStr = [NSString stringWithFormat:@"http://10.8.162.123:8080/MJServerTest/login?username=%@&pwd=%@", username, pwd];        // 转码    urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];        // URL里面不能包含中文    NSURL *url = [NSURL URLWithString:urlStr];        // 2.2.创建请求对象    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 默认就是GET请求    request.timeoutInterval = 5; // 设置请求超时        // 2.3.发送请求    [self sendAsync:request];}#pragma mark - NSURLConnectionDataDelegate 代理方法/** *  请求错误(失败)的时候调用(请求超时\断网\没有网, 一般指客户端错误) */- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ }/** *  当接受到服务器的响应(连通了服务器)就会调用 */- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{   }/** *  当接受到服务器的数据就会调用(可能会被调用多次, 每次调用只会传递部分数据) */- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{   }/** *  当服务器的数据接受完毕后就会调用 */- (void)connectionDidFinishLoading:(NSURLConnection *)connection{    }/** *  <span style="font-size:18px;"><strong>发送异步请求的方式2:</strong></span> start方法, 代理 */- (void)sendAsync2:(NSURLRequest *)request{    NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];    [conn start]; // 异步执行}/** *  <span style="font-size:18px;"><strong>发送异步请求的方式1</strong>:</span> 类方法, block */- (void)sendAsync:(NSURLRequest *)request{    NSOperationQueue *queue = [NSOperationQueue mainQueue];    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {  // 当请求结束的时候调用 (拿到了服务器的数据, 请求失败)                // 隐藏HUD (刷新UI界面, 一定要放在主线程, 不能放在子线程)        [MBProgressHUD hideHUD];        if (data) { // 请求成功            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];            NSString *error = dict[@"error"];            if (error) { // 登录失败                [MBProgressHUD showError:error];            } else { // 登录成功                NSString *success =  dict[@"success"];                [MBProgressHUD showSuccess:success];            }        } else { // 请求失败            [MBProgressHUD showError:@"网络繁忙, 请稍后再试"];        }    }];}<span style="font-size:24px;color:#FF0000;">post请求 <span style="font-size:14px;color:#000000;"></span></span><pre name="code" class="objc"> <span style="font-size:12px;">// 2.发送请求给服务器    // POST请求:请求体        // 2.1.设置请求路径    NSURL *url = [NSURL URLWithString:@"http://xxxxx/login"];        // 2.2.创建请求对象    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 默认就是GET请求    request.timeoutInterval = 5; // 设置请求超时    request.HTTPMethod = @"POST"; // 设置为POST请求        // 通过请求头告诉服务器客户端的类型    [request setValue:@"iosxxx" forHTTPHeaderField:@"User-Agent"];        // 设置请求体    NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", username, pwd];    request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];        // 2.3.发送请求    NSOperationQueue *queue = [NSOperationQueue mainQueue];    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {  // 当请求结束的时候调用 (拿到了服务器的数据, 请求失败)        // 隐藏HUD (刷新UI界面, 一定要放在主线程, 不能放在子线程)        [MBProgressHUD hideHUD];        if (data) { // 请求成功            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];            NSString *error = dict[@"error"];            if (error) { // 登录失败                [MBProgressHUD showError:error];            } else { // 登录成功                NSString *success =  dict[@"success"];                [MBProgressHUD showSuccess:success];            }        } else { // 请求失败            [MBProgressHUD showError:@"网络繁忙, 请稍后再试"];        }    }];</span>



0 0
原创粉丝点击