2

我有 WCF 服务,我想从我的 Web 服务中获取数据。但是 URL 总是返回 nil。为什么?我想将来自文本字段值的参数发送到 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]];
4

3 回答 3

5
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 问题)。

于 2013-03-08T10:00:38.393 回答
1

您正在使用NSASCIIStringEncoding对 unicode 字符串进行编码,因此您会得到奇怪的字符。

像这样使用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];
于 2013-03-08T09:59:29.813 回答
0

我相信这是Unicode字符。使用以下方法转换它们stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding

NSString *text = @"ATAŞEHİR";
NSString *convertedText = [text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *request = [NSString stringWithFormat:@"http://www.xxxxxxxx.com/CCWCF.svc/MethodName/%@", convertedText];
于 2013-03-08T10:08:22.007 回答