3

我正在从网络服务读取数据。如果我将链接放在浏览器上,问题就可以正常工作。当我这样运行时,会给我错误。我怀疑是不是因为我发送参数的方式。我的参数列表有这个dID=1,5,7,11,14,18,26&FromDate=18 Sep 2012 00:00 am&ToDate=18 Sep 2012 10:00 am。我需要在这里做一些编码吗?

URL xmlURLDM = new URL(urlDM);
InputStream xml2 = xmlURLDM.openStream();

我收到这个错误

java.io.IOException: Server returned HTTP response code: 400 for URL: 
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1612)
        at java.net.URL.openStream(URL.java:1035)
        at xmlreader.main(xmlreader.java:172)
4

2 回答 2

7

您确实需要编码,很可能是您的 URL 中的空格导致了问题。使用内置 url 编码的 Java。例如:

String encoded = URLEncoder.encode(myUrl, "UTF-8");

...调用编码为 URL 的 Web 服务

状态码为 400 可能还有其他原因,但此编码问题可能是您的第一个绊脚石。

于 2012-09-18T03:57:44.537 回答
1

URL 的文档

URL 类本身并不根据 RFC2396 中定义的转义机制对任何 URL 组件进行编码或解码。调用者有责任对在调用 URL 之前需要转义的任何字段进行编码,并对从 URL 返回的任何转义字段进行解码。此外,由于 URL 不知道 URL 转义,因此它无法识别同一 URL 的编码或解码形式之间的等价性。

所以请URLEncoder.encode()在调用之前使用URL()

于 2012-09-18T04:12:44.863 回答