0
NSURL *url = [NSURL URLWithString:[[NSString stringWithFormat:@"www.mywebsite.com/setnumber.asmx?myNumber=%@", myNumber.text]
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[NSURLConnection alloc] initWithRequest:request delegate:self];

するとNSLog、以下のURLが表示されます

www.mywebsite.com/setnumber.asmx?myNumber=+96512345678

しかし、データベースを見ると、 が表示されません+。番号が 96512345678 と表示されます なぜこれが起こっているのか分かりますか?

4

1 に答える 1

0

URL では、(スペース)を+意味します。文字を送信するには、文字を URL エンコードする必要があります。

残念ながら、あなたが使用している方法では文字列を十分に URL エンコードできません。代わりに、次のようなものが必要です。

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
  NULL,
  (CFStringRef)unencodedString,
  NULL,
  (CFStringRef)@"!*'();:@&=+$,/?%#[]",
  kCFStringEncodingUTF8
);

使用をデコードするには

NSString *unencodedUrlString = [@"http://www.demo.com/2%2C7"
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
于 2013-10-28T12:51:23.997 に答える