首页 > 代码库 > iOS POST请求 有中文的时候
iOS POST请求 有中文的时候
镔哥,最近post请求遇到一些问题,当有中文的时候是请求不成功
下面镔哥写两种案例:
1:通常post请求:(有中文不成功)
//1:设置URL
NSString *host = HOST;
NSString *usename = @"fuck";
NSString *queryString = [NSStringstringWithFormat:@"/app/clickTableScreen?userName=%@&idfa=%@&operator=%@&systemVersion=%@&networkState=%@&deviceName=%@&memorySize=%@&model=%@",usename,adId, [self checkCarrier],phoneVersion,netStr,userPhoneName,totalDiskSpaceStr, [LoginViewControllerdeviceString]] ;
NSLog(@"querString:%@",queryString);
//完整的设置参数
NSString *urlString = [NSStringstringWithFormat:@"%@%@",host,queryString];
NSLog(@"参数:%@",urlString);
//得到完整的url
NSURL *url1 = [NSURLURLWithString:urlString];
//2:Request请求
NSMutableURLRequest *request = [[NSMutableURLRequestalloc]initWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:10];
[request setHTTPMethod:@"POST"];
//第三步,连接服务器
NSError * error = nil;
NSData *reqData = [NSURLConnectionsendSynchronousRequest:request returningResponse:nilerror:&error];
// //3:将请求转换二进制
// NSData *reqData = http://www.mamicode.com/[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
if(reqData =http://www.mamicode.com/= nil){
if(error){//这样写有个好处,就是如果解析数据不成功,系统会列出原因,我就因为写了这句话才知道出现什么原因:(Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo=0x14ed24c0 {NSUnderlyingError=0x)
NSLog(@"error = %@", error);
}
UIAlertView * alert = [[UIAlertViewalloc] initWithTitle:@"提示"message:@"网络不稳定,请稍后尝试!"delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:@"ok",nil];
[alert show];
return;
}else{
NSLog(@"error = %@", error);
}
NSDictionary *reqDic=[NSJSONSerializationJSONObjectWithData:reqData options:NSJSONReadingAllowFragmentserror:nil];
NSString *info = [NSStringstringWithFormat:@"%@",[reqDicobjectForKey:@"info"]];
NSLog(@"参数字典:%@",reqDic);
//4:打印数据
NSString *errcode = [NSStringstringWithFormat:@"%@", [reqDicobjectForKey:@"errcode"]];
if ([errcode isEqualToString:@"0"]) {
NSLog(@"成功了");
}else
{
UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:@"获取广告标识符失败"message:info delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil,nil];
[alert show];
}
}
/1:设置URL
NSString *host = HOST;
NSString *usename = @"fuck";
NSString *queryString = [NSString stringWithFormat:@"/app/clickTableScreen?userName=%@&idfa=%@&operator=%@&systemVersion=%@&networkState=%@&deviceName=%@&memorySize=%@&model=%@",usename,adId, [self checkCarrier],phoneVersion,netStr,userPhoneName,totalDiskSpaceStr, [LoginViewController deviceString]] ;
NSLog(@"querString:%@",queryString);
//完整的设置参数
NSString *urlString = [NSString stringWithFormat:@"%@%@",host,queryString];
NSLog(@"参数:%@",urlString);
//得到完整的url
//有中文的时候要转码
NSString * urlstr = [urlStringstringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSURL * url = [NSURLURLWithString:urlstr];
//2:Request请求
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[request setHTTPMethod:@"POST"];
//第三步,连接服务器
NSError * error = nil;
NSData *reqData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
// //3:将请求转换二进制
// NSData *reqData = http://www.mamicode.com/[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
if(reqData =http://www.mamicode.com/= nil){
if(error){//这样写有个好处,就是如果解析数据不成功,系统会列出原因,我就因为写了这句话才知道出现什么原因:(Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo=0x14ed24c0 {NSUnderlyingError=0x)
NSLog(@"error = %@", error);
}
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"网络不稳定,请稍后尝试!"delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"ok", nil];
[alert show];
return;
}else{
NSLog(@"error = %@", error);
}
NSDictionary *reqDic=[NSJSONSerialization JSONObjectWithData:reqData options:NSJSONReadingAllowFragments error:nil];
NSString *info = [NSString stringWithFormat:@"%@",[reqDic objectForKey:@"info"]];
NSLog(@"参数字典:%@",reqDic);
//4:打印数据
NSString *errcode = [NSString stringWithFormat:@"%@", [reqDic objectForKey:@"errcode"]];
if ([errcode isEqualToString:@"0"]) {
NSLog(@"成功了");
}else
{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"获取广告标识符失败" message:info delegate:selfcancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alert show];
}
}
iOS POST请求 有中文的时候