HTTP请求的常见方法
- GET
- 所有参数拼接在URL后面,并且参数之间用&隔开
- 没有请求体
- 一般用来查询数据
- POST
- 所有参数都放在
请求体
中 - 一般用来修改、增加、删除数据
创建HTTP请求
NSString *urlString = @"http://XXXXX?name=小明&pwd=000";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"GET";
NSString *urlString = @"http://XXXXXXX/图片";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"name=小明&pwd=000" dataUsingEncoding:NSUTF8StringEncoding];
使用NSURLConnection发送HTTP请求
发送同步请求
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request
returningResponse:(NSURLResponse **)response
error:(NSError **)error;
发送异步请求-block(数据小的时候可以用这种方法)
+ (void)sendAsynchronousRequest:(NSURLRequest*) request
queue:(NSOperationQueue*) queue
completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;
发送异步请求-delegate(数据大的时候用这种方法)
- (instancetype)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately;
- (instancetype)initWithRequest:(NSURLRequest *)request delegate:(id)delegate;
+ (NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate;
[connection start];
- 遵守
NSURLConnectionDataDelegate
协议,实现协议中的代理方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
[connection cancel]
NSString和NSData的互相转换
NSData *data = [@"520it.com" dataUsingEncoding:NSUTF8StringEncoding];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
截取字符串
NSUInteger loc = [string rangeOfString:@"\":\""].location + 3;
NSUInteger len = [string rangeOfString:@"\"}"].location - loc;
NSString *msg = [string substringWithRange:NSMakeRange(loc, len)];