您的位置:首页 > 理论基础 > 计算机网络

HTTP POST请求并将请求参数设置成请求体添加到请求中

2016-05-26 16:02 465 查看
- (void)post:(NSString *)URL param:(NSDictionary *)param finishBlock:(void (^) (NSURLResponse *response, NSData *data, NSError *connectionError)) block {
//网络请求字符串
NSString *urlString = @"";
//UTF-8转码
NSString *urlStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//把传进来的URL字符串变为URL地址
NSURL *url = [NSURL URLWithString:urlStr];
//请求初始化
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20];
//解析请求参数,用NSDictionary来存参数,通过自定义的函数把它解析成post格式的字符串
NSString *parseParam = [self setDictionaryToString:param];
//将字符串转化成data数据
NSData *postData = [parseParam dataUsingEncoding:NSUTF8StringEncoding];
//设置请求体
[request setHTTPBody:postData];
//设置请求方法
[request setHTTPMethod:@"POST"];
//创建一个新的队列
NSOperationQueue *queue = [NSOperationQueue new];
//发送异步请求,请求完以后返回的数据,通过completionHandler参数来调用
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:block];
}

//字典转字符串
- (NSString *)setDictionaryToString:(NSDictionary *)dic {

NSString *keyValueFormat;
NSMutableString *result = [NSMutableString new];
//实例化一个key枚举器用来存放dictionary的key
NSEnumerator *keyEnum = [dic keyEnumerator];
id key;
while (key = [keyEnum nextObject]) {
keyValueFormat = [NSString stringWithFormat:@"%@=%@&",key,[dic valueForKey:key]];
[result appendString:keyValueFormat];
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  POST