NSURL OData URL

NSURL OData URL

我正在像这样将我的 OData URL 传递给 NSURL

NSURL *url = [[NSURL alloc] initWithString:@"https://localhost/odata/Venues?$expand=Fixtures($filter=day(DateTime) eq 9 and month(DateTime) eq 3 and year(DateTime) eq 2020)&$filter=Fixtures/any(f: day(f/DateTime) eq 9 and month(f/DateTime) eq 3 and year(f/DateTime) eq 2020)"];

这个URL不被NS接受URL,它正在变成NULL

当我这样给URL

NSURL *url = [[NSURL alloc] initWithString:@"https://google.com"];

然后 NSURL 正在接受 URL... 我想知道如何将我的数据 URL 传递给 NSURL.

URL 包含几个需要转义的字符。这绝对不是 URL 的工作方式,因此方法 initWithString 失败并返回 NULL...

在大多数情况下,我都遇到过需要转义 URL 的情况,方法 stringByAddingPercentEscapesUsingEncoding 已经足够了,因为它们相对较短 URL秒。尽管如此,你的 URL 有很多这种方法不太喜欢的字符。 (这包括斜杠 / 和符号 &)。

对于这种特殊情况,以下方法可能会在保持简单的同时产生最佳结果。

NSString* unencodedURLString = @"https://localhost/odata/Venues?$expand=Fixtures($filter=day(DateTime) eq 9 and month(DateTime) eq 3 and year(DateTime) eq 2020)&$filter=Fixtures/any(f: day(f/DateTime) eq 9 and month(f/DateTime) eq 3 and year(f/DateTime) eq 2020)";

NSString* urlString = [unencodedURLString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

如果这对您有用,请告诉我们...