本文主要是介绍23-向服务器发送JSON、url转码、多值参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1)发送json给服务器
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{// 1.URLNSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/order"];// 2.请求NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// 3.请求方法request.HTTPMethod = @"POST";// 4.设置请求体(请求参数)// 创建一个描述订单信息的JSON数据NSDictionary *orderInfo = @{@"shop_id" : @"1243324",@"shop_name" : @"啊哈哈哈",@"user_id" : @"899"};
// 把字典转化成NSData
NSData *json = [NSJSONSerialization dataWithJSONObject:orderInfo options:NSJSONWritingPrettyPrinted error:nil];request.HTTPBody = json;// 5.设置请求头:这次请求体的数据不再是普通的参数,而是一个JSON数据[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];// 6.发送请求
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {if (data == nil || connectionError) return;NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];NSString *error = dict[@"error"];if (error) {[MBProgressHUD showError:error];} else {NSString *success = dict[@"success"];[MBProgressHUD showSuccess:success];}}];
}
2)URL的转码问题
url中不能包含中文,所以呢要对中文进行转码
NSString *urlStr = [NSString stringWithFormat:@"http://localhost/login?username=喝喝&pwd=123"];
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
3 )向服务器发送多值参数
http://localhost:8080/MJServer/weather?place=beijing&place=shenzhen&place=ss 这种类型就是多值参数。其返回内容是:{“weathers”:[{“city”:”beijing”,”status”:”晴转多云”},{“city”:”shenzhen”,”status”:”晴转多云”},{“city”:”ss”,”status”:”晴转多云”}]}
代码:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/weather"];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// 设置请求ffrequest.HTTPMethod = @"POST";// 设置请求体(请求参数)NSMutableString *param = [NSMutableString string];[param appendString:@"palce=beijing"];[param appendString:@"&place=tianjin"];[param appendString:@"&place=luyi"];param = [NSMutableString stringWithString:[param stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; // 如果需要http encode的话,加上此句request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];// 发送请求[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {if (data == nil || connectionError) {NSLog(@"HAVE A ERROR");}NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];NSLog(@"%@",dict);NSString *error = dict[@"error"];if (error) {[MBProgressHUD showError:error];}else{NSLog(@"%@",dict);}}];
}
这篇关于23-向服务器发送JSON、url转码、多值参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!