在HttpURLConnection连接上获取HTTP 415错误

时间:2012-10-04 01:14:12

标签: java httpurlconnection http-status-code-415

我使用以下代码发送GET请求然后接收响应:

try {
  URL url = new URL(strurl);
  HttpURLConnection con = (HttpURLConnection) url.openConnection();

  con.setRequestMethod("GET");
  con.setDoOutput(true);            

  con.connect();

  BufferedReader is = new BufferedReader(new InputStreamReader(con.getInputStream()));
  String line;
  String vAnswerStr="";
  String lineSeparator = System.getProperty("line.separator");

  while ((line = is.readLine()) != null) {
      vAnswerStr = vAnswerStr + line + lineSeparator;
  }
  is.close();
} catch (IOException ex) {
  ex.printStackTrace();
}

strurl是这样的,虽然我不认为它的格式可能与问题有关:

  

https://somesite.ru/?arg1=val1&arg2=val2

预期输出为xml,smth如下:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<tag1>00000</tag1>
<tag2>0</tag2>
    ...
</response>

10次尝试中有5次尝试完成这项工作。

其他5次尝试返回:

  

java.io.IOException:服务器返回HTTP响应代码:415为URL:https://somesite.ru/?arg1=val1&arg2=val2

     

在   sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)     在   sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)

我已经在SO上读了几篇关于HTTP 415错误的帖子。但他们似乎没有帮助。我已尝试过不同的请求属性,但要么找不到,要么就是找不到。

IDE是NetBeans 7.0

有人能给我正确的方向来解决问题吗?

修改

忘了说当从浏览器做同样的请求时,它可以100%尝试。

1 个答案:

答案 0 :(得分:2)

你应该检查几件事:

  1. 如果您有权访问服务器,是否记录了任何内容?
  2. 目的地支持哪些内容类型?您应该指定内容类型,以便远程服务器知道您要发送它的内容:

    con.setRequestProperty(“Content-Type”,“text / html; charset = utf-8”);

  3. 您可能需要对文本进行编码 - 请参阅Java的URLEncoder