2013-03-08 199 views
2

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

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]]; 
+0

你尝试'NSUTF8StringEncoding'代替(你的字符串似乎是Unicode)? – Alladinian 2013-03-08 09:59:19

+0

@ Rajneesh071请不要使用'replaceOccuranceOfString ...'做这个。百分号转义例程*远*更有能力 – 2013-04-09 13:21:22

+0

ohk好友谢谢... – Rajneesh071 2013-04-09 14:11:15

回答

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

+0

它绝对有效。感谢分享。 – 2013-03-08 10:31:34

1

您正在使用NSASCIIStringEncoding编码一个unicode字符串,这样你会得到怪异charaters。

使用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

这是真的,但他应该只编码最后一部分,而不是整个URL! – Sulthan 2013-03-08 10:01:49

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];