在NSURL中正确解码用于转换的字符串URL

时间:2015-09-30 11:00:32

标签: ios objective-c nsurl

3 个答案:

答案 0 :(得分:5)

仔细阅读你的问题。您说您要解码URL并调用一个名为

的方法
stringByAddingPercentEscapesUsingEncoding
        ^^^^^^

尝试使用stringByRemovingPercentEncoding。这应该解码您的URL。

对于另一个问题,如何"演员"它是NSURL:强制转换意味着您强制调试器将变量视为特定类型。这意味着您无法转换对象并将其转换为另一种类型的实例。

您必须使用字符串创建NSURL 的实例:

NSURL *URL = [NSURL URLWithString:[URLString stringByRemovingPercentEncoding]];

答案 1 :(得分:0)

您可以使用componentsSeparatedByString

示例:

NSString* url = @"https://pubads.g.doubleclick.net/gampad/ads?sz=624x352&iu=/131302407/Uzman_Dky&impl=s&gdfp_req=1&env=vp&output=xml_vast2&unviewed_position_start=1&url=[referrer_url]&description_url=[description_url]&correlator=1443516172";

NSArray* components = [url componentsSeparatedByString:@"&"];
for (NSString* str in components)
{
    NSArray* keyval = [str componentsSeparatedByString:@"="];
    // keyval[0] is your key
    // keyval[1] is your value
    NSLog(@"key: %@ | value: %@", keyval[0], keyval[1]);
}

示例输出:

 key: https://pubads.g.doubleclick.net/gampad/ads?sz | value: 624x352
 key: iu | value: /131302407/Uzman_Dky
 key: impl | value: s
 key: gdfp_req | value: 1
 key: env | value: vp
 key: output | value: xml_vast2
 key: unviewed_position_start | value: 1
 key: url | value: [referrer_url]
 key: description_url | value: [description_url]
 key: correlator | value: 1443516172

您获得的网址可以由stringByRemovingPercentEscapesUsingEncoding解码,以删除所有转义序列。

答案 2 :(得分:0)

问题是,url依赖于CDATA,这就是它无法正确解码/编码的原因。我使用了 - (void) parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock{委托方法并编码了这样的字符串:

NSString *string = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];

比我分配给NSURL没有任何问题。