查询中的NSURL数组参数

时间:2017-08-10 09:26:30

标签: ios http nsurl

我需要在查询段中构建一个包含数组的NSURL。数组表示法如下所示:

test.com?arr[a]=1&arr[b]=2

这里的问题是NSURL转义括号,因此最终的查询段看起来像这样:

test.com?arr%5Ba%5D=1&arr%5Bb%5D=2

经过一些研究后,我偶然发现了NSURLComponents类,但就像我预期的那样,NSURLQueryItem对象只能将NSStrings作为值,因此也不会创建所需的输出。我找不到构建包含非转义括号的NSURL对象的方法。

3 个答案:

答案 0 :(得分:0)

将要保留的字符添加到集

NSString *myString = @"http://foo.bar/?key[]=value";
NSCharacterSet *theSet = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!*():/?[]="];
NSURL *myUrl = [NSURL URLWithString:[myString stringByAddingPercentEncodingWithAllowedCharacters:theSet]];

我不确定这是否有效,如果我在myUrl上移动鼠标进行预览,则显示[]
但如果我po myurl.absoluteString它显示逃脱

答案 1 :(得分:0)

此问题不再适用。据我所知,不可能构建包含非转义括号的NSURL对象。如果有人仍然找到了这样做的方法,请随意留在这里。

答案 2 :(得分:0)

这是一个古老的问题,但尚未得到解答,因此请参见:

NSArray *queryItems = @[
    [NSURLQueryItem queryItemWithName:@"arr[a]" value:@"1"],
    [NSURLQueryItem queryItemWithName:@"arr[b]" value:@"2"],
];
[components setQueryItems:queryItems];