我正在从网络服务中读取数据。问题,如果我把链接放在浏览器上它工作正常。当我这样跑的时候给我错误。我怀疑是由于我发送参数的方式。我的参数列表有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)
答案 0 :(得分:6)
您确实需要编码,大多数情况下,您的网址中的空格会导致问题。 使用内置url-encoding的Javas。例如:
String encoded = URLEncoder.encode(myUrl, "UTF-8");
... 使用编码为URL
调用Web服务状态代码为400可能还有其他原因,但这个编码问题可能是您的第一个绊脚石。
答案 1 :(得分:1)
网址says的文档,
URL类本身不会对任何URL组件进行编码或解码 根据RFC2396中定义的转义机制。它是 调用者负责编码需要的任何字段 在调用URL之前进行转义,并解码任何转义字段, 从URL返回的。此外,因为URL不知道 URL转义,它不识别编码之间的等价 或相同网址的解码形式。
因此,请在调用URLEncoder.encode()
URL()