java.lang.IllegalArgumentException: Illegal character in scheme at index 0: localhost Java语言异常:scheme的第一个字符非法,索引为0:localhost。

24

我正在开发一个Android应用程序,它从服务器(localhost-mssql和nodejs)接收数据,保存数据,然后显示它。

在接收服务器响应后,我遇到了这个错误。

我按照下面的说明链接说明操作,但使用的是本地服务器而不是Web服务器。谢谢。

 Illegal character in scheme at index 0: 192.168.2.7:3000
    java.net.URISyntaxException: Illegal character in scheme at index 0: 192.168.2.7:3000
            at java.net.URI.validateScheme(URI.java:419)
            at java.net.URI.parseURI(URI.java:363)
            at java.net.URI.<init>(URI.java:204)
            at cz.uhk.fim.jedlima3.searchrooms.asyncTask.DownloadDatabaseAsync.doInBackground(DownloadDatabaseAsync.java:30)
            at cz.uhk.fim.jedlima3.searchrooms.asyncTask.DownloadDatabaseAsync.doInBackground(DownloadDatabaseAsync.java:15)
            at android.os.AsyncTask$2.call(AsyncTask.java:287)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
            at java.util.concurrent.FutureTask.run(FutureTask.java:137)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
            at java.lang.Thread.run(Thread.java:864)

Please include the code. - ryanyuyu
8
这确实不是一个有效的URI;在您的配置文件或者您放置192.168.2.7:3000的地方有误,那不是一个有效的URI;您可能想表达的是http://192.168.2.7:3000 - fge
6个回答

68

您应该从 URL 中删除空格并定义协议 httphttps


非常感谢。你的答案对我有用。 - Ganesan J

2
如果您正在使用本地主机,则应以以下方式传递URL- http://localhost:8080/api/notes 定义方案很重要(http / https) 也不要使用空格。

1

在属性文件中定义URL时,不要像这样加上双引号:

dev.baseURL=http://localhost:8080/products/

1

请确保不要忘记 http:// 中的 // 符号。


已经有一个被接受的答案强调了这一点。如果您想在现有答案中添加附加说明,请考虑在答案下留下评论,而不是将其作为新答案发布。仅在您认为该补充内容独特、未被其他答案涵盖且详细到足以作为单独答案发布时才将其发布为答案。 - Aditya Patnaik
@AdityaPatnaik 嗯,被接受的答案并没有完全包含“//”字符。不过,对那个答案进行评论就足够了。 - cyberbrain
这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - cyberbrain
@cyberbrain,感谢您的评论。我认为被接受的答案没有明确提到或隐含了这一点的原因是因为在2015年的问题评论中已经涵盖了它。此外,在http后面使用//是基本的理解,不需要在答案中明确提及。我假设被接受答案的用户认为读者已经理解了这个基础知识。 - Aditya Patnaik

0
请确保您在URL中没有拼写错误,http://https://

-1

当我们使用在本地机器上运行的任何服务时,请尝试使用http协议调用服务,而不是直接调用服务。 例如:localhost:1234/hello(错误会导致上述异常) http://localhost:1234/hello(正确的方式)


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