AFHTTPRequestOperationManager注意点

AFHTTPRequestOperationManager注意点

ActionSheet在控制器view上,因为点击拍照时,会modal出另外一个控制器,当前的控制器view就会从窗口中移除。就会报ActionSheet不在窗口上。

- (void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent
*)event

{

UIActionSheet *sheet = [[UIActionSheet
alloc]
initWithTitle:@"图片上传"
delegate:self
cancelButtonTitle:@"取消"
destructiveButtonTitle:nil
otherButtonTitles:@"拍照",
@"相册",nil];

[sheet
showInView:self.view];

}

#pragma mark -
实现UIActionSheetDelegate代理方法

- (void)actionSheet:(UIActionSheet
*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

{

UIImagePickerController
*ipc = [[UIImagePickerController
alloc]
init];

ipc.delegate
=
self;

switch (buttonIndex) {

case
0:

if (![UIImagePickerController
isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])

return;

ipc.sourceType
=
UIImagePickerControllerSourceTypeCamera;

break;

case
1:

if (![UIImagePickerController
isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])

return;

ipc.sourceType
=
UIImagePickerControllerSourceTypePhotoLibrary;

break;

default:

break;

}

[self
presentViewController:ipc
animated:YES
completion:nil];

}

注意:

如果在switch的case中定义一个局部变量,需要用大括号括住。

- (void)imagePickerController:(UIImagePickerController
*)picker didFinishPickingMediaWithInfo:(NSDictionary
*)info

{

//
关闭UIImagePickerController控制器

[self
dismissViewControllerAnimated:YES
completion:nil];

NSLog(@"%@",info);

//
获取图片

UIImage *image = info[UIImagePickerControllerOriginalImage];

self.imageV.image
= image;

}

- (IBAction)upLoad

{

//
创建一个管理者

AFHTTPRequestOperationManager
*manger = [AFHTTPRequestOperationManager
manager];

//
设置参数

NSMutableDictionary
*params = [NSMutableDictionary
dictionary];

params[@"username"] =
@"123";

params[@"pwd"] =
@"123";

//
设置URL

NSString *url =
@"http://192.168.15.56:8080/MJServer/upload";

[manger
POST:url
parameters:params
constructingBodyWithBlock:^(id<AFMultipartFormData>
formData) {

注意:

在发送请求之前会自动调用这个block

需要在这个block中添加文件参数到formData中

NSData *fileData =
UIImageJPEGRepresentation(self.imageV.image,
1.0);

[formData
appendPartWithFileData:fileData
name:@"file"
fileName:@"image.png"
mimeType:@"image/png"];

}
success:^(AFHTTPRequestOperation
*operation,
id responseObject) {

NSLog(@"上传成功");

}
failure:^(AFHTTPRequestOperation
*operation,
NSError *error) {

NSLog(@"上传失败");

}];

}

注意:

1.保留照片的质量

NSData *fileData = UIImageJPEGRepresentation(self.imageV.image, 1.0);

2.AFN不能监听文件的上传进度,ASI可以监听文件的上传进度。

3.需要上传的文件的具体数据

FileData :
需要上传的文件的具体数据

name : 服务器那边接收文件用的参数名

fileName : (告诉服务器)所上传文件的文件名

mimeType : 所上传文件的文件类型

NSData
*fileData =
UIImageJPEGRepresentation(self.imageV.image,
1.0);

[formData
appendPartWithFileData:fileData
name:@"file"
fileName:@"image.png"
mimeType:@"image/png"];

4.需要上传的文件的URL路径

FileURL :
需要上传的文件的URL路径

name : 服务器那边接收文件用的参数名

fileName : (告诉服务器)所上传文件的文件名

mimeType : 所上传文件的文件类型

NSURL
*url = [[NSBundle
mainBundle]
URLForResource:@"itcast"
withExtension:@"txt"];

[formData
appendPartWithFileURL:url
name:@"file"
fileName:@"test.txt"
mimeType:@"text/plain"
error:nil];

时间: 2024-10-23 01:39:04

AFHTTPRequestOperationManager注意点的相关文章

AFHTTPRequestOperationManager网络请求的时候添加一个菊花

问: Can you help me to understand, how to use UIActivityIndicatorView+AFNetworking or UIProgressView+AFNetworking. Do I need to create one more UIViewController and if yes, where do I need to implement it? have found out that I need to use setProgress

AFHTTPRequestOperationManager当一个网络请求加入菊花

问: Can you help me to understand, how to use UIActivityIndicatorView+AFNetworking or UIProgressView+AFNetworking. Do I need to create one more UIViewController and if yes, where do I need to implement it? have found out that I need to use setProgress

AFHTTPRequestOperationManager的post方法

使用afnetworking2.0下,AFHTTPRequestOperationManager的post方法向服务器发送用户名和密码,参数名都正确且都已经赋值,为什么服务端接收到得数据是空的 + (AFHTTPRequestOperationManager *)httpRequestOperationManager { NSURL *baseUrl = [NSURL URLWithString:@"http://192.168.1.234:8081"]; AFHTTPRequestO

AFHTTPRequestOperationManager的那些事

AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; // responseObject的类型是NSXMLParser mgr.responseSerializer = [AFXMLParserResponseSerializer serializer]; // responseObject的类型是NSData mgr.responseSerializer = [AFHTTPResponseSe

AFNetworking 3.0x版本最新特性

AFNetworking是一款在OS X和iOS下都令人喜爱的网络库.为了迎合iOS新版本的升级, AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持.如果你的项目以前使用过这些API,建议您立即升级到基于 NSURLSession 的API的AFNetworking的版本.本指南将引导您完成这个过程. 本指南是为了引导使用AFNetworking 2.x升级到最新的版本API,以达到过渡的目的,并且解释了新增和更改的设计结构. 新设备要求: iO

AFN的简单二次封装

可用于登陆,注册,修改密码,获得手机验证码. 首先导入AFN第三方库 NetWorkTool.h // NetWorkTool.h // 网络请求 // // Created by 丁云飞 on 15/11/8. // Copyright © 2015年 DLS. All rights reserved. // #import <Foundation/Foundation.h> #import "AFNetworking.h" @protocol netWorkToolDe

AFNetworking发送和接收字符串时报3840错误的解决办法

AFNetworking框架默认请求类型和响应类型都是JSON格式的,在特殊情况下,我们使用字符串形式的时候,就会报3840错误,如何解决呢? 设置请求管理者: // 因为传递过去和接收回来的数据都不是json类型的,所以在这里要设置为AFHTTPRequestSerializer和AFHTTPResponseSerializer mgr.requestSerializer = [AFHTTPRequestSerializer serializer];// 请求 mgr.responseSeri

XML 数据请求与JSON 数据请求

(1)XML 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 和 AFXMLParserResponseSerializer,另外结合第三方框架 XMLDictionary 进行数据转换 使用 XMLDictionary 的好处:有效避免自行实现 NSXMLParserDelegate 委托代理协议方法来进行繁琐的数据拼凑解析 (2)JSON 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 或 AFHTT

iOS开发 之 AFNetworking的基本使用

首先下载AFNetworking 然后在需要使用的类中,导入如下2个头文件: #import "AFNetworking.h"//主要用于网络请求方法 #import "UIKit+AFNetworking.h"//里面有异步加载图片的方法 GET请求网络数据方式: -(void)obtainData {     // 启动系统风火轮     [UIApplication sharedApplication].networkActivityIndicatorVisi