簡體   English   中英

NSURL總是返回Nil

[英]NSURL Always Returns Nil

我有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]];
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對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];

我相信這是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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM