NSURL总是返回零

时间:2013-03-08 09:56:20

标签: iphone ios nsurl

我有WCF服务,我想从我的网络服务获取数据。但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]];

3 个答案:

答案 0 :(得分: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问题)。

答案 1 :(得分: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];

答案 2 :(得分: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];