首页 > 解决方案 > 如何修复服务器返回的 HTTP 响应代码 400 并且无法处理转换

问题描述

我正在尝试通过 java 编码进行 JIRA 转换,大部分时间它都可以工作,但是 jira rest api 调用有时会返回以下错误:(实际上有这个错误,转换被处理)

java.io.IOException: Server returned HTTP response code: 400 for URL: http://testingSite/jira/rest/api/latest/issue/ABC-123/transitions

此外,在某些情况下,rest api 调用不会返回错误,但不会进行转换。

这是我的编码,大部分时间它都有效,所以它毁了我的日子来弄清楚发生了什么。

try {
    String authkey = "YWRtaW46cGFzc3dvcmQ=";
    URL url = new URL("http://testingSite/jira/rest/api/latest/issue/ABC-123/transitions");
    connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("POST");
    connection.setDoOutput(true);
    connection.setRequestProperty("Authorization", "Basic " + authkey);
    connection.setRequestProperty("Accept-Charset", "UTF-8");
    connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");

    OutputStream os = connection.getOutputStream();
    String data = "{\"transition\": {\"id\": \"71\"}}";
    os.write(data.toString().getBytes("UTF-8"));
    os.close();

    content = connection.getInputStream();
    in = new InputStreamReader(content);
    br = new BufferedReader(in);
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (Exception e) {
    e.printStackTrace();
}

错误来自这一行:

content = connection.getInputStream();

我希望没有例外,并且所有转换都已处理,但这种行为对我来说很奇怪。

行为 1:服务器返回 HTTP 响应代码:400 但已处理转换

行为 2:服务器不返回任何错误但未处理转换

标签: javarestjira

解决方案


所以我在这里寻找参考文档。它指出

POST:400 - 如果没有指定转换。

您已经硬编码了转换 id,并且对于这种类型的问题,它可能具有不同的转换 id 或类似的东西。试着打电话

GET /rest/api/2/issue/{issueIdOrKey}/transitions?{transitionId}

验证您的过渡确实存在。


推荐阅读