NSURL总是返回零

我有WCF服务,我想从我的Web服务获取数据。 但URL总是返回零。 为什么? 我想将参数发送到来自文本字段值的WCF。 例如;

txtfield.text = @"ATAŞEHİR"; 

怎么了 ?

 NSString *request = [NSString stringWithFormat:@"http://www.xxxxxxxx.com/CCWCF.svc/MethodName/%@",txtfield.text]; NSURL *URL = [NSURL URLWithString:[request stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]; 

我尝试了不同的东西,但结果并没有改变。

 NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.xxxxxxxx.com/CCWCF.svc/MethodName/%@",txtfield.text]]; 

要么:

 NSURL *URL = [[NSURL alloc] initWithString:[request stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]; 

 NSString* encodedText = [txtfield.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString *request = [NSString stringWithFormat:@"http://www.xxxxxxxx.com/CCWCF.svc/MethodName/%@",encodedText]; NSURL *URL = [NSURL URLWithString:request]; 

另外, [NSString stringByAddingPercentEscapesUsingEncoding:]对于URL编码可能有点问题。 使用Core Foundation有一个更安全的方法。 看到http://madebymany.com/blog/url-encoding-an-nsstring-on-ios ,例如(找不到SO问题)。

您正在使用NSASCIIStringEncoding编码一个Unicodestring,因此你会得到奇怪的字符。

使用NSUTF8StringEncoding就像:

 NSString *queryParemeters = [textField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString *request = [NSString stringWithFormat:@"http://www.xxxxxxxx.com/CCWCF.svc/MethodName/%@", queryParemeters]; NSLog(@"Encoded URL :%@", request); NSURL *URL = [NSURL URLWithString:request]; 

我相信这是unicode字符。 使用stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding转换它们stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding

 NSString *text = @"ATAŞEHİR"; NSString *convertedText = [text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString *request = [NSString stringWithFormat:@"http://www.xxxxxxxx.com/CCWCF.svc/MethodName/%@", convertedText];