NSURLComponents does not correctly handle parameters
Originator: | Raubtiger | ||
Number: | rdar://24434533 | Date Originated: | 01-Feb-2016 10:41 AM |
Status: | Open | Resolved: | |
Product: | iOS | Product Version: | Xcode 7.2 |
Classification: | Serious Bug | Reproducible: | Always |
Summary: If a URL contains a path and parameters the separator between path and parameters (;) is escaped to %3B and thus the separation fails Steps to Reproduce: 1. open the attached storyboard. 2. Not that the assert at the end fails because the initial and reassembled URLs are not equal Expected Results: initial and reassembled URLs are equal Actual Results: initial and reassembled URLs are not equal Version: Xcode 7.2 Notes: Configuration: Playground ------ contents of the playground. Copy and past it into your own ---- //: Playground - noun: a place where people can play import UIKit // example URL string from the NSURL class documentation. let urlString = "https://johnny:p4ssw0rd@www.example.com:443/script.ext;param=value?query=value#ref" // convert to an NSURL object guard let initialURL = NSURL(string: urlString) else { preconditionFailure() } // disassemble into NSURLComponents guard let components = NSURLComponents(URL: initialURL, resolvingAgainstBaseURL: true) else { preconditionFailure() } // reassemble back into an NSURL object let reassembledURL = components.URL // whoops! The two are not equal. (the ; separating path and parameters was converted into %3B) assert(initialURL == reassembledURL)
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!