看一下界面:
-
服务器默认是的头像:
1、首先:我们利用导入 #import "AFNetworking.h"
-
设置登录方法:
利用:AFHTTPRequestOperationManager// ----- 登录方法 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; // 参数 ---- 字典 NSDictionary *param = @{@"username":_userTextField.text,@"password":_pwdTextField.text};
-
发送一个GET 请求
[manager GET:kLoginURL parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {NSLog(@"%@",responseObject);// 打印输出结果(利用结果,才能写下面的key 的值!!!) NSString *code = responseObject[@"code"];// 这个看接口设计人员设计了。这里设计是code NSString *message = responseObject[@"message"]; [self showMessage:message];#pragma mark --- 如果登录成功 if ([code isEqualToString:@"login_success"]) {// 根据son值判断是否登录成功 // 跳到下一个界面 AlbumViewController *albumVC = [[AlbumViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:albumVC]; // 好友相册 的返回按钮是 “注销”,不是返回。所以,要用 presentViewController [self presentViewController:nav animated:YES completion:^{ _longBtn.enabled = YES; }]; _longBtn.enabled = YES; }else { _longBtn.enabled = YES; } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"%@",error); [self showMessage:@"网络连接发生错误!!"]; _longBtn.enabled = YES; }];
打印结果是一个JSON:
- 说明登录成功了!
上传头像
- 先看一下手机页面:
-
利用原生态 NSURLConnection(后继会利用框架,更简单!!!)留意我封装的这个setHTTPBodyWithImage:boundary:方法。
// 1.生成NSURL NSURL *url = [NSURL URLWithString:kUploadURL]; // 2.生成可变的NSURLMutableRequest NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 3.修改请求方式 request.HTTPMethod = @"POST"; // 4。设置请求头 /** boundary: 是分隔符号,告诉服务器,我的请求体里用的就是就是这个分隔符,而且,拼接请求体也用到这个分隔符 */ // [request setValue:@"multipart/form-data; boundary=Adifadlfzxfoiasdfqwer" forHTTPHeaderField:@"Content-Type"]; NSString *boundary = @"Adifadlfzxfoiasdfqwer";// 这里是可以值是可以随便修改的 [request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary] forHTTPHeaderField:@"Content-Type"];// 这些值是官方的不能乱修改 // 5. 设置要上传的数据 拼接请求体 request.HTTPBody = [self setHTTPBodyWithImage:_myImageView.image boundary:boundary]; NSString *boundary = @"Adifadlfzxfoiasdfqwer";// 这里是可以值是可以随便修改的 [request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary] forHTTPHeaderField:@"Content-Type"];// 那些值是官方的不能乱修改的 // 6.�利用NSURLConnection连接网络,上传头像 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { if (connectionError) { NSLog(@"connectionError:%@",connectionError); }else { // 先调试一下结果:看服务器返回的结果,然后,在解析! NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); // 解析 NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; NSString *code = jsonData[@"code"]; NSString *message = jsonData[@"message"]; [self showMessage:message]; _uploadBtn.selected = YES; if ([code isEqualToString:@"upload_file_ok"]) { // 头像上传成功 NSLog(@"t头像上传成功"); }else { // 头像上传失败 NSLog(@"t头像上传失败!"); } } }];
到这里可以打印结果调试了:
// 封装 图片类型,供上面的方法使用:
-
返回 是 NSData 类型
- (NSData *)setHTTPBodyWithImage:(UIImage *)image boundary:(NSString *)boundary { /** Body格式,每行的结尾都需要\r\n换行 --Adifadlfzxfoiasdfqwer Content-Disposition: form-data; name=headimage; filename=headimage.png Content-Type: image/png 空行 文件(如图片) --Adifadlfzxfoiasdfqwer-- */ // 创建第一行 \r\n NSString *line = [NSString stringWithFormat:@"--%@\r\n",boundary]; // 追加第2行 line = [line stringByAppendingFormat:@"Content-Disposition: form-data; name=headimage; filename=headimage.png\r\n"]; // 追加第3行 line = [line stringByAppendingFormat:@"Content-Type: image/png\r\n"]; // 追加第4行 line = [line stringByAppendingFormat:@"\r\n"]; // 把以上内容转化为可变的NSMutaleData // 生成一个不可变的 NSData NSData *data = [line dataUsingEncoding:NSUTF8StringEncoding]; NSMutableData *bufData = [[NSMutableData alloc] initWithData:data]; // 把图片变成 NSData NSData *imgData = UIImagePNGRepresentation(image); // 追加第5行 [bufData appendData:imgData]; // 追加换行符 \r\n [bufData appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; // 追加第6行 // [NSString stringWithFormat:@"--%@--",boundary] [bufData appendData:[[NSString stringWithFormat:@"--%@--",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; return bufData; }
最后,点击上传:
- 我们去看一下服务器:成功上传头像!!!