6

我需要获取字符串 url 的主机名

我正在尝试从字符串创建 NSURL 对象,然后使用 NSURL 的主机属性来获取主机名。但主机名始终为空。

NSURL *url = [NSURL URLWithString: @"www.google.com"];
NSLog(@"Host name %@", url.host);

但主机名始终为空。谁能解释为什么主机名为空?

编辑:很抱歉有一个错字,我在提问时错过了引号和逗号。但问题还是一样。

4

3 回答 3

8

根据Apple 文档

- (NSString *)host;

返回值:

URL 的主机。如果接收者不符合RFC 1808,则返回 nil

因此,如果它不符合RFC 1808,它将返回 nil。根据 的定义RFC 1808

正确的语法如下:

<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>

所以你需要http://在形成的同时添加NSURL

NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSLog(@"Host name %@", url.host);
于 2012-10-29T22:11:06.790 回答
1

看起来您在 www.google.com 之后缺少一个“?请尝试添加它。

NSURL *url = [NSURL URLWithString: @"www.google.com"];
NSLog(@"Host name %@", url.host);                  ^
                     ^

(注意第二行我还加了一个逗号,我尽量用 ^ 指向它)

编辑:啊,好吧,那么它可能是第二行的逗号。

于 2012-10-29T22:04:50.517 回答
0

如果你这样做会更好(添加 http://):

NSURL *url = [NSURL URLWithString: @"http://www.google.com"];
NSLog(@"Host name %@", url.host);
于 2012-10-29T22:05:48.663 回答