iOS简单地网络请求

介绍一下项目中常用的网络请求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) {

}];

暂时就这些内容了,还是那句老话,有不对的地方欢迎大家指正。

你可能感兴趣的:(iOS简单地网络请求)