2

根据以下文件NSURLComponents

如果设置未编码的属性,则可以通过读取编码的属性值来获得编码的等效值,反之亦然。

我试图获取查询的百分比编码版本和 url 的路径,但我错过了一些东西:

NSURL * url = [NSURL URLWithString:@"http://google.com"];

NSURLComponents * components = [[NSURLComponents alloc] initWithURL:url resolvingAgainstBaseURL:YES];
components.query = @"oauth_callback=http://google.com";

NSLog(@"Encoded: %@", [components URL]); 
//-> Encoded: http://google.com?oauth_callback=http://google.com
//Does not encode "/" or ":"

我在哪里失败?

4

1 回答 1

1

我认为NSURLComponent他的行为是正确的。来自维基百科

例如,在 URI 的“查询”组件(? 字符之后的部分)中,“/”仍被视为保留字符,但它通常没有保留用途,除非特定的 URI 方案另有说明。当字符没有保留用途时,不需要进行百分比编码。

于 2015-05-14T11:27:46.007 回答