服务器返回HTTP响应代码:400

时间:2012-09-18 03:51:17

标签: java

我正在从网络服务中读取数据。问题,如果我把链接放在浏览器上它工作正常。当我这样跑的时候给我错误。我怀疑是由于我发送参数的方式。我的参数列表有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)

2 个答案:

答案 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()