java - 在 HttpURLConnection 连接上获取 HTTP 415 错误

标签 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,像这样:

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

10 次尝试中有 5 次成功。

其他 5 次尝试返回:

java.io.IOException: Server returned HTTP response code: 415 for URL: https://somesite.ru/?arg1=val1&arg2=val2

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

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

IDE 是 NetBeans 7.0

谁能给我解决问题的正确方向?

编辑

忘了说,当从浏览器发出相同的请求时,它在 100% 的尝试中都有效。

最佳答案

你应该检查的几件事:

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

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

  3. 您可能需要对文本进行编码 - 查看 Java 的 URLEncoder

关于java - 在 HttpURLConnection 连接上获取 HTTP 415 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12719106/

相关文章:

java - 使用 Node.js/Passport 对 Android 用户进行身份验证

xml - 415 不支持的媒体类型 HTTP

java - 获取 HTTP 状态 415 - Jersey 不支持的媒体类型

java - 数组IntList(java)

java - JInternalFrame 的单个实例

java - TextInputLayout : EditText added is not a TextInputEditText. 请改用该类

java - 不支持的媒体类型 - HTTP 状态 415

java - 在java swings中插入空值操作

java - 重用 HttpURLConnection

java - 如何重新打开 HttpURLConnection