【问题标题】:ios [NSURL URLWithString:requestUrl relativeToURL:baseUrl]. if requestUrl contains string '/User/Page' , return nilios [NSURL URLWithString:requestUrl relativeToURL:baseUrl]。如果 requestUrl 包含字符串 '/User/Page' ,则返回 nil
【发布时间】:2020-02-19 14:08:34
【问题描述】:
[NSURL URLWithString:requestUrl relativeToURL:baseUrl]

如果 requestUrl 包含 '/User/page',则返回 nil。

如果你想要测试。

NSString *reqUrl1 = @"/api/v3.1/User​/Page/";

NSString *reqUrl2 = @"api/v3.1/User​/Page";

NSString *reqUrl3 = @"/api/v3.1/User​/Page/";

NSString *reqUrl4 = @"/api/v3.1/Follow/Page";

NSString *reqUrl5 = @"/api/v3.1/User/Follow";

NSString *reqUrl6 = @"/api/v3.1/User/Pollow";

NSString *reqUrl7 = @"api/v3.2/User​/Page";

NSString *reqUrl8 = @"api/v3.2/User​/Page/aaa/bbb";

NSURL *url = [NSURL URLWithString:@"http://appgateway.xxx.xx-xxx.xxx.com/"];

NSString *lastUrl1 = [NSURL URLWithString:reqUrl1 relativeToURL:url].absoluteString;

NSString *lastUrl2 = [NSURL URLWithString:reqUrl2 relativeToURL:url].absoluteString;

NSString *lastUrl3 = [NSURL URLWithString:reqUrl3 relativeToURL:url].absoluteString;

NSString *lastUrl4 = [NSURL URLWithString:reqUrl4 relativeToURL:url].absoluteString;

NSString *lastUrl5 = [NSURL URLWithString:reqUrl5 relativeToURL:url].absoluteString;

NSString *lastUrl6 = [NSURL URLWithString:reqUrl6 relativeToURL:url].absoluteString;

NSString *lastUrl7 = [NSURL URLWithString:reqUrl7 relativeToURL:url].absoluteString;

NSString *lastUrl8 = [NSURL URLWithString:reqUrl8 relativeToURL:url].absoluteString;

NSLog(@"============");

// ------------------------------------------------------

(lldb) po lastUrl1

 nil

(lldb) po lastUrl2

 nil

(lldb) po lastUrl3

 nil

(lldb) po lastUrl4

http://appgateway.xxx.xx-xxx.xxx.com/api/v3.1/Follow/Page

(lldb) po lastUrl5

http://appgateway.xxx.xx-xxx.xxx.com/api/v3.1/User/Follow

(lldb) po lastUrl6

http://appgateway.xxx.xx-xxx.xxx.com/api/v3.1/User/Pollow

(lldb) po lastUrl7

 nil

(lldb) po lastUrl8

 nil

【问题讨论】:

  • NSURL *hardCoded = [NSURL URLWithString:@"/api/v3.1/Follow/Page" relativeToURL:baseURL]; 有效。我对此进行了编码:pastebin.com/mx7J4njm,它更易于阅读/修改。问题出在其他地方:以“/”开头,以没有“/”结尾,这似乎不是“用户/页面”的情况......

标签: objective-c nsurl


【解决方案1】:

@Larme 。抱歉,我的示例有问题。第三个例子修改为“/api/v3.1/user/page”。这不是真的。

遵循您的代码。打印为

错误:http://appgateway.xxx.xx-xxx.xxx.com/ + /api/v3.1/user/page 成功:http://appgateway.xxx.xx-xxx.xxx.com/api/v3.1/follow/page

但是我在遍历字符时发现了一个问题。

for (NSString *aRequestURL in requestURLs) {
        for(int i=0; i<aRequestURL.length; i++){
            unichar ch = [aRequestURL characterAtIndex: i];
            printf("%hu", ch);
        }
        NSLog(@"%@", aRequestURL);
}

“/user”和“/page”之间有一个奇怪的字符“8203”。非常感谢您的代码。它拓宽了我的思路

但我不知道为什么 '8203' 会影响 URL 生成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2014-10-30
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多