Несколько вещей, чтобы решить проблему:
- В методе
executeQueryPost
необходимо добавить следующие заголовки для запроса:
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
И код должен выглядеть следующим образом:
private PlayerResponse executeQueryPost(PlayerDTO playerRequest, String queryPost) {
final String query = url + queryPost;
log.info("[Query POST] : " + query);
HttpPost httpPost = new HttpPost(query);
httpPost.addHeader("content-type", "application/json");
StringEntity params;
try{
params = new StringEntity(gson.toJson(playerRequest));
System.out.println(gson.toJson(playerRequest));
httpPost.setEntity(params);
// Need to add the following headers
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
} catch (UnsupportedEncodingException e) {
Logger.getLogger(SeaBattleGame.class.getName()).log(Level.SEVERE, null, e);
}
return executeHttpUriRequest(httpPost);
}
В случае, если код продолжает давать сбой, потому что он не может создать нового игрока. Вы должны обработать исключение в методе addPlayer()
. Перед возвратом проверьте, не является ли объект, возвращаемый executeQueryPost
, ненулевым.
Обновление :
Возможно, код неисправен только потому, что служба в: http://localhost:8090 не работает, поэтому он получает 500
в качестве ответа.