NSURLRequest中的不支持的URL

38

如果我在终端上运行这个请求,我可以像平常一样看到JSON请求:

curl -XGET 192.168.0.6:8888/scripts/data/backend2/index.php/name/_all

我的NSURlRequest代码如下:

 NSURLRequest *request = [NSURLRequest requestWithURL:
                             [NSURL URLWithString:@"192.168.0.6:8888/scripts/data/backend2/index.php/name/_all"]];

    [[NSURLConnection alloc] initWithRequest:request delegate:self];

我遇到了这个错误:

didFailWithError
2013-11-29 22:31:08.164 Ski Greece[607:a0b] Connection failed: Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo=0xcd042d0 {NSErrorFailingURLStringKey=192.168.0.6:8888/scripts/data/backend2/index.php/name/_all, NSErrorFailingURLKey=192.168.0.6:8888/scripts/data/backend2/index.php/name/_all, NSLocalizedDescription=unsupported URL, NSUnderlyingError=0xdbdcc70 "unsupported URL"}

我该如何调用那个URL?我无法访问服务器代码 - 我知道它只是设置返回我需要的内容,如果我调用那个URL会怎样?


28
请在网址前加上 http:// - rmaddy
添加“http://”并重试?此外,您是通过URL请求还是请求端口(我自己也不确定)? - David H
同意。没有“http://”(或其他URL前缀),它根本不是URL。 - russellm
1
确保您的服务器正在运行,然后确保URL前缀。 - Saad Chaudhry
11个回答

61

尝试在您的URL中包含适当的URL方案,例如:

[NSURL URLWithString:@"http://www...


13
我有一个以 http:// 开头的 URL,但我仍然收到错误信息。有人知道还有什么可能会导致这种情况吗? - 最白目
在我的情况下,问题出在URL的末尾。我怀疑你现在可能不需要答案,但它可能会帮助未来的某个人 :) - i.bel

27

在我的情况下,我用以下方法解决了这个问题:

strURL = [strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

strURL 包含 URL 字符串。


11

在我的情况下,我访问运行在我自己的Mac上的服务,所以我的URL是127.0.0.1:8080/list。

在我添加了http://协议之后,它就可以工作了!

现在它是http://127.0.0.1:8080/list,而不是127.0.0.1:8080/list。


9

我也遇到了同样的错误,即使url路径是正确的,但在http之前有一个空格,如下所示:

NSString *path = @" http://www.mylink/";
NSURL *url = [NSURL URLWithString:path];

我遇到了 URL 为空的问题,导致程序提示“不支持的URL”。但是,将空格去掉后就可以正常工作。


非常感谢,你救了一天。 - Sakthimuthiah
如果这对你们有帮助,欢迎评价我的回答。 - Keshav

3
与Alf G的答案相同,但适用于iOS 9及以上版本。
strUrl = [strUrl stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLHostAllowedCharacterSet]

2

在我的情况下,URL中添加了空格。我已经删除了空格并运行了程序。请确保您即使在传递参数时也没有向URL中添加任何空格。希望对某些人有所帮助。


2

在我的情况下,我在Swift中传递了一个未包装的可选项。一旦我将可选项解包成字符串,URL就被正确接受了。


1
似乎这是一个格式错误的URL,或者根本不是有效的URL,请在浏览器中尝试访问此URL,我认为您将不会得到任何结果。当URL不受支持时,会出现错误代码=-1002。

0

如前所述,URL 中的空格可能会导致此问题,但也有可能是您的字符串包含不受支持的字符。例如,如果您从 PDF、Word 或其他文档中复制并粘贴 URL,则可能包含不受支持的字符。在视觉上看起来很好,但编译器却无法识别。

要解决此问题,在您的 [NSURL URLWithString:@"http://blabhblabh"] 方法中,删除整行代码,而不仅仅是 URL,并手动重新输入链接和方法。


0

如果您的URL包含尾随换行符,可能会出现此错误。

当我将从文本文件中读取的API密钥(以使其不受版本控制系统的影响)附加到URL的末尾时,文件包含了一个尾随空格,因此我遇到了这个问题。

请参见https://dev59.com/r2445IYBdhLWcg3w5OII#4645700,其中提供了可以从字符串中删除换行符的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接