23-向服务器发送JSON、url转码、多值参数

来源:互联网 发布:豆瓣批量发帖软件 编辑:程序博客网 时间:2024/06/17 00:36

1)发送json给服务器

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    // 1.URL    NSURL *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"                                };// 把字典转化成NSDataNSData *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];    // 设置请求ff    request.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);        }    }];}
0 0
原创粉丝点击