Estou com uma aplicação cujo um dos módulos é responsável pelo envio de um JSON para uma API online que faz a sincronização dos dados com um sistema retaguarda. Quando esse módulo é executado ou debugado em uma IDE, ele realiza essa tarefa com sucesso, porém, quando executado na aplicação instalada no Windows (.jar) o mesmo não funciona e retorna um erro 500 da API, da qual já entrei em contato com o desenvolvedor dela e o mesmo não consegue disponibilizar o log pra mim por ser um handler. Cogitei a possibilidade de ser então permissões ou algum bloqueio no firewall já que na IDE funciona e na aplicação não, portanto desativei tudo e continuou com o mesmo problema. É usado a biblioteca javax.net, inclusive em um outro módulo que é feito uma requisição parecida com menos fluxo de dados, ela se comunica com a API corretamente.
Segue o trecho do código em que é feito o envio:
URL url = new URL(urlPost);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
UploadRetaguardaModel upload = new UploadRetaguardaModel();
upload.montarJsonPrincipal();
JSONObject main = upload.mainObject;
upload.closeConnection();
try {
//add request header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setRequestProperty("Accept-charset", "UTF-8");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
// Send post request
OutputStream os = con.getOutputStream();
os.write(main.toString().getBytes());
os.close();
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
[...]
}