ios http请求
来源:互联网 发布:淘宝店排名怎么靠前 编辑:程序博客网 时间:2024/06/06 12:50
ios网络请求
今天在公司开始着手做了一个项目,要和网络接号对接的,有以下一点点小心得,上来分享一下:
首先说ios的网络请求,方式有很多种,我把它分了两种,一种是外框架型,一种是内框架;前都是应用了官方API以外的框架,后者则是相对;
-(void)testRequest{ NSLog(@"test request..."); NSString *postUrl = @"url"; NSMutableDictionary *dlist = [[NSMutableDictionary alloc] init]; [dlist setObject:@"value" forKey:@"key"]; .... NSString *jsonStrPost = [self sendRequestTo:[NSURL URLWithString:postUrl] usingVerb:@"POST" withParameters:dlist]; NSLog(@"do post: jsonStrPost = %@", jsonStrPost);}
上面用的就是有点像json的做法,ios的,呵!
下面再说另一种做法:
//quest/** * url:请求地址 * verb:请求方式 * parameters:请求参数 */-(NSString *)sendRequestTo:(NSURL *)url usingVerb:(NSString *)verb withParameters:(NSDictionary *)parameters{ NSString *jsonStr = nil; NSData *body = nil; NSMutableString *params = nil; NSString *contentType = @"text/html; charset=utf-8"; NSURL *finalURL = url; if(nil != parameters){ params = [[NSMutableString alloc] init]; for(id key in parameters){ NSString *encodedkey = [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; CFStringRef value = (__bridge CFStringRef)[[parameters objectForKey:key] copy]; CFStringRef encodedValue = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, value,NULL,(CFStringRef)@";/?:@&=+$", kCFStringEncodingUTF8); [params appendFormat:@"%@=%@&", encodedkey, encodedValue]; CFRelease(value); CFRelease(encodedValue); } [params deleteCharactersInRange:NSMakeRange([params length] - 1, 1)]; } // if([verb isEqualToString:@"POST"]){ contentType = @"application/x-www-form-urlencoded; charset=utf-8"; body = [params dataUsingEncoding:NSUTF8StringEncoding]; }else{ if(nil != parameters){ NSString *urlWithParams = [[url absoluteString] stringByAppendingFormat:@"?%@", params]; finalURL = [NSURL URLWithString:urlWithParams]; } } NSMutableDictionary *headers = [[NSMutableDictionary alloc] init]; [headers setValue:contentType forKey:@"Content-Type"]; [headers setValue:@"text/html" forKey:@"Accept"]; [headers setValue:@"no-cache" forKey:@"Cache-Control"]; [headers setValue:@"no-cache" forKey:@"Pragma"]; [headers setValue:@"close" forKey:@"Connection"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:finalURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; [request setHTTPMethod:verb]; [request setAllHTTPHeaderFields:headers]; if(nil != parameters){ [request setHTTPBody:body]; } params = nil; // NSURLResponse *response; NSError *error = nil; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; if(error){ NSLog(@"something is wrong: %@", [error description]); }else{ if(responseData){ jsonStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; } } return jsonStr;}
NSString *jsonStrPost = [selfsendRequestTo:[NSURLURLWithString:postUrl] usingVerb:@"POST"withParameters:dlist];
下面是第三种了~有什么疑问可以留言,偶会常看博客的了!
NSString *requestString = [NSString stringWithFormat:@"url"]; // 数据内容转换为UTF8编码,第二个参数为数据长度// NSData *requestData = [NSData dataWithBytes:[requestString UTF8String] length:[requestString length]]; // 请求的URL地址 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:requestString]]; NSLog(@"%@\n",requestString); // 设置请求方式 //[request setHTTPMethod:@"get"]; // 设置请求内容 //[request setHTTPBody:requestData]; // 设置请求头声明 [request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"]; // 执行请求 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; // 输出返回数据 NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@", returnString);
上面三种方法都有POST和GET两种方式的其实他们也是差不多的,不过写法不一样而已
- ios http请求
- IOS之HTTP请求
- ios http请求
- ios HTTP post请求
- ios http请求
- iOS HTTP请求
- IOS Http请求
- iOS http 请求
- IOS-HTTP请求
- ios 添加 http 请求
- iOS发送http请求
- iOS 允许HTTP请求
- iOS网络--HTTP请求
- IOS http网络请求
- iOS iOS9 HTTP请求失败
- iOS NsSession http请求错误
- iOS HTTP请求与解析
- iOS http请求记录一下
- 这是在csdn的第一篇
- 第十二周实验报告一
- ubuntu mysql 安装和用户登录
- 实验报告13-3
- Windows 7系统下如何查本机IP
- ios http请求
- 修改板 mfoc 0.10.3 增加中断、选择扇区、可选默认密码等功能
- android CursorAdapter的监听事件
- 如何使用示波器触发进行调试时间
- 第十四周实验报告2
- Struct2 中 ognl表达式正确适用的地方
- 第十二周实验报告二
- CursorAdapter简介
- 中国最大的IT社区