Java 为什么在J2SE中URL后面的问号与Android的处理方式不同

Java 为什么在J2SE中URL后面的问号与Android的处理方式不同,java,android,url,Java,Android,Url,以下代码行在J2SE和Android上具有不同的输出: System.out.println(new URL("http://stackoverflow.com/?")); (我正在使用java.net.URL) 在J2SE上,输出将是 http://stackoverflow.com/? 在安卓上的时候 http://stackoverflow.com/ 现在,我知道这在功能上是相似的,因为没有查询参数,但我很好奇为什么它有不同的行为。不幸的是,这破坏了服务器端代码(不是我的,而是我正在

以下代码行在J2SE和Android上具有不同的输出:

System.out.println(new URL("http://stackoverflow.com/?"));
(我正在使用
java.net.URL

在J2SE上,输出将是

http://stackoverflow.com/?
在安卓上的时候

http://stackoverflow.com/

现在,我知道这在功能上是相似的,因为没有查询参数,但我很好奇为什么它有不同的行为。不幸的是,这破坏了服务器端代码(不是我的,而是我正在集成的第三方应用程序),它使用的是
strpos($\u server['REQUEST\u URI'],'?')+1)来解析请求。

我不确定它们应该有什么不同?对于所有实际用途,没有查询与空查询字符串可以被认为是相同的?您将如何检查服务器端是否有空查询和没有查询?echo$\u SERVER['REQUEST\u URI';另一个PHP示例是:$query=substr($\u SERVER['REQUEST\u URI']、strpos($\u SERVER['REQUEST\u URI']、'?')+1);似乎是Android实现中的一个bug。你能在这里报告吗?如果你把链接发回到这里,我会确保它被分类和修复。谢谢你的评论。我已经提交了一份bug报告