java - 我有一个非常奇怪的问题,url 被附加在查询字符串中

标签 java url

下面是我的代码中使用的网址

URL url = new URL("https://8.7.177.4/ns-api?object=answerrule&action=read&domain=amj.nms.mixnetworks.net&user=9001");

但是我遇到了异常

java.io.FileNotFoundException: https://8.7.177.4/ns-api/?object=answerrule&action=read&domain=amj.nms.mixnetworks.net&user=9001
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at AuthenticateCurl.authenticatenewPostUrl(AuthenticateCurl.java:311)
    at AuthenticateCurl.main(AuthenticateCurl.java:341)

在异常中,我们可以找到在开始查询字符串之前附加 /?object=answerrule 的 url。

我该如何解决这个问题。

最佳答案

当您访问不带额外“/”的网址时,网络服务器会将您转发到具有额外“/”的版本。当尝试在命令行中curl URL 时,您可以看到这一点:

$ curl --insecure -v 'https://8.7.177.4/ns-api?object=answerrule&action=read&domain=amj.nms.mixnetworks.net&user=9001'
> GET /ns-api?object=answerrule&action=read&domain=amj.nms.mixnetworks.net&user=9001 HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: 8.7.177.4
> Accept: */*
> 
< HTTP/1.1 301 Moved Permanently
< Date: Thu, 12 Jul 2012 18:45:28 GMT
< Server: Apache/2.2.11 (Fedora)
< Location: https://8.7.177.4/ns-api/?object=answerrule&action=read&domain=amj.nms.mixnetworks.net&user=9001
< Content-Length: 392
< Connection: close
< Content-Type: text/html; charset=iso-8859-1
<

这很好,HttpURLConnection 会自动跟随重定向到新的 URL。这是正常行为。

根据新的 URL,我们得到不同的结果:

$ curl --insecure -v 'https://8.7.177.4/ns-api/?object=answerrule&action=read&domain=amj.nms.mixnetworks.net&user=9001'
> GET /ns-api/?object=answerrule&action=read&domain=amj.nms.mixnetworks.net&user=9001 HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: 8.7.177.4
> Accept: */*
> 
< HTTP/1.1 404 Not Found
< Date: Thu, 12 Jul 2012 18:46:46 GMT
< Server: Apache/2.2.11 (Fedora)
< X-Powered-By: PHP/5.2.9
< Content-Length: 0
< Connection: close
< Content-Type: text/html; charset=UTF-8
< 

...我们得到一个 404,这就是为什么你得到一个 FileNotFoundException!

如果您没有预料到重定向,并且您也在运行服务器,则服务器上可能存在配置问题。

关于java - 我有一个非常奇怪的问题,url 被附加在查询字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11458136/

相关文章:

java - 记录复杂性和对 MessageFormat 性能的关注

java - 导入的 jar 文件创建空包

jquery - 如何从url中获取参数?

asp.net - 单击自定义后退按钮返回上一页

java 。引用不带参数的方法

java - 摄氏度/华氏度转换错误

java - 重新启动应用程序刽子手

android - 使用 SimpleAdapter 的 ListView 中来自 URL 的图像

url - 文件 :/, 文件 ://, 文件:///和有什么区别

java - 无法获取 UTF-8 形式的 URL 内容