2013-03-08 233 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];