关于HTTP的URL中带有中文的转码方法

来源:互联网 发布:手机超牛数据恢复软件 编辑:程序博客网 时间:2024/06/06 11:00

有些时候会遇到连接中带有中文样式的URL
以下是针对不同方法的解决方式

POST请求

- (void)post{    // 0.请求路径    NSString *urlStr = @"http://www.csdn.net/login";    NSURL *url = [NSURL URLWithString:urlStr];    // 1.创建请求对象    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];    request.HTTPMethod = @"POST";    request.HTTPBody = [@"username=广东深圳&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];    // 2.发送请求    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {        // 3.解析服务器返回的数据(解析成字符串)        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];        NSLog(@"%@", string);    }];}

GET请求

- (void)get{    // 0.请求路径    NSString *urlStr = @"http://www.csdn.net/login?username=广东深圳&pwd=123";    // 将中文URL进行转码(字符串转字符串)    urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    NSURL *url = [NSURL URLWithString:urlStr];    // 1.创建请求对象    NSURLRequest *request = [NSURLRequest requestWithURL:url];    // 2.发送请求    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {        // 3.解析服务器返回的数据(解析成字符串)        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];        NSLog(@"%@", string);    }];}

NSString ->NSData

NSData *data=[@"csdn.net"  dataUsingEncoding:NSUTF8StringEncoding];

NSData->NSString

NSString *string=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
0 0