У меня запущен весенний загрузочный сервер, который принимает http-запрос. Я тщательно протестировал его с помощью curl, и он отлично работает. Однако, когда я пытаюсь отправить запрос и получить ответ в java клиенте, я получаю:
java .io.IOException: сервер вернул код ответа HTTP: 400 для URL:
и на стороне сервера я получаю:
[org.springframework.web.bind.MissingServletRequestParameterException: обязательный строковый параметр 'Username' отсутствует]
Вот метод весенней загрузки, который я использую пытаюсь использовать:
@PostMapping(path="/CreateAccount") // Map ONLY POST Requests
public @ResponseBody String CreateUser (@RequestParam String Username
, @RequestParam String Password) {
// @ResponseBody means the returned String is the response, not a view name
// @RequestParam means it is a parameter from the GET or POST request
//make sure the username and password is valid input
if (!validateInput(Username) || !validateInput(Password))
{
return "Username and Password cannot be blank";
}
//make sure the username is unique
//check if Username is equal to any other User's username
User u = findByUsername(Username);
//if a user was found in the table
if ( !(u == null) )
{
return "Username already taken\nPlease choose another";
}
//if we are here we are clear to make a new user
User n = new User();
n.setUsername(Username);
n.setPassword(Password);
n.setRole("Player");
userRepository.save(n);
//THIS CAUSES AN ERROR
//create a stat object to be added to the table
Stats s = new Stats();
s.setUsername(Username);
statRepository.save(s);
//create a token for the user
String usrToken = createToken(tokenSize);
//add the username and token to hashmap
userTokens.put(Username, usrToken);
//return this user's token
return usrToken;
}
А вот мой клиент:
public static void CreateAccount(String username, String password)
{
try
{
String s = serverURL + "/CreateAccount";
URL url = new URL(s);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setDoOutput(true);
String json = "[{\n\"Username\"=\"Jake\",\"Password\"=\"123\"\n}]";
System.out.println(json);
OutputStream os = connection.getOutputStream();
DataOutputStream out = new DataOutputStream( os );
byte[] input = json.getBytes("utf-8");
out.writeUTF(json);
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String response = br.readLine();
System.out.println(response);
}
catch (Exception e)
{
System.out.println("#");
System.out.println(e);
}
}
Я думал, что это связано с моим json форматированием, но я пробовал снова и снова, и нет независимо от того, как я отформатирую его, я получаю ту же ошибку.