我正在编写一个使用REST API迁移JBoss Guvnor包的应用程序。基本上它通过REST GET请求读取所有资产,并使用PUT / POST请求将它们写入另一个Guvnor。
以下是我的POST方法的一小部分:
HttpURLConnection conn = (HttpURLConnection) path.getURL()
.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-type", path.getType().getAcceptMIME());
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("Authorization", "Basic " + authString);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
conn.getOutputStream()));
bw.write(content);
bw.flush();
conn.connect();
可行,所有资产都在迁移,但每次conn.getResponseCode()
返回500而conn.getResponseMessage()
都会返回内部服务器错误。
我对使用java处理HTTP请求相当新,我不知道是否应该发生这种情况,为什么会发生这种情况,如果是由于我的代码片段中的某些错误,或者是服务器端(Guvnors)错误?
答案 0 :(得分:1)
您的客户端代码看起来不错。当响应代码不是2xx系列时,标准HttpUrlConnection在尝试读取输入流时总是抛出异常。响应代码500表示服务器端发生意外错误。请参阅服务器日志。你会在那里找到原因。
祝你好运。答案 1 :(得分:1)
您的代码没有明显错误。 500响应意味着(应该意味着)服务器遇到了内部问题。你的请求有些不寻常的事情可能会触发问题,但也可能是完全不相关的事情。
我建议您执行以下操作:
检查服务器端日志中是否存在与失败请求一致的错误/异常。
打开,读取和记录HttpUrlConnection的错误流。它可能有更多信息性的错误信息。