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

Unicode 文字列をエンコードするために使用しているNSASCIIStringEncodingため、奇妙な文字が表示されます。

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

ユニコード文字だと思います。を使用してそれらを変換します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 に答える