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
时,我会在下面看到
www.mywebsite.com/setnumber.asmx?myNumber=+96512345678
但是当我查看数据库时,我看不到+
。我只看到号码为96512345678
知道为什么会这样吗?
答案 0 :(得分:0)
在网址中,+
表示(空格)。为了传输角色,你必须对其进行URL编码。
不幸的是,您使用的方法不会对字符串进行足够的URL编码;相反,你需要这样的东西:
NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)unencodedString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8
);
解码使用
NSString *unencodedUrlString = [@"http://www.demo.com/2%2C7"
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];