介绍一下项目中常用的网络请求GET和POST。
1.GET主要用于数据查询,POST主要用于登录注册,文件上传等,当然数据查询也可以用POST
2.GET会将参数拼接在url的后面,容易造成重要信息的泄漏(如用户名和密码),POST将参数放在请求体中,相对安全一点。
3.GET的效率要比POST高。
下面说一下具体的用法(基于AFNetwork,json格式数据)
GET用法
// 1.获取请求管理对象
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// 2.设置请求参数
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
[manager.requestSerializer setTimeoutInterval:30];
//3.设置返回数据类型
// 默认返回是JSON格式
/**
* JSON格式 : AFJSONResponseSerializer
* XML格式 : AFXMLParserResponseSerializer
* 图片格式 : AFImageResponseSerializer
* 不解析 : AFHTTPResponseSerializer
*/
/**
* 没搞明白3者有什么区别,好像用第一个,外面调用时,不用解析json,直接就能用返回值
* NSJSONReadingMutableContainers
* NSJSONReadingMutableLeaves
* NSJSONReadingAllowFragments
*/
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingMutableContainers];
[manager GET:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
POST用法
// 1.获取请求管理对象
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// 2.设置请求参数
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
[manager.requestSerializer setTimeoutInterval:30];
//3.设置返回数据类型
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingMutableContainers];
[manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
POST用法--图片上传
// 1.获取请求管理对象
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// 2.设置请求参数
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
[manager.requestSerializer setTimeoutInterval:30];
//3.设置返回数据类型
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingMutableContainers];
[manager POST:url parameters:parameters constructingBodyWithBlock:^(idformData) {
NSData *imgData = UIImageJPEGRepresentation(image, 0.5);
/**
* name:部分是服务器用来解析的字段
* fileName:则是直接上传上去的图片,注意一定要加 .jpg或者.png,(这个根据你得到这个imgData是通过jepg还是png的方式来获取决定)。
* mimeType:值也要与上面的类型对应,网上看到有的说直接写成 @"image/*", 据说也是可以的, 没验证过。
*/
[formData appendPartWithFileData:imgData name:@"img" fileName:@"img.jpg" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
暂时就这些内容了,还是那句老话,有不对的地方欢迎大家指正。