Я хочу передать и получить строку Json из контроллера. Я хочу вызвать контроллер, передав json String, а также хочу получить json String в контроллере. Есть какой-либо способ сделать это. У меня есть 2 значения в моем параметре URL: api = asdf23 && jsonstr = {"name": "myname", "age": "20"} Как я могу получить эти два параметра на контроллере
@RequestMapping(value = "/GetJSON", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody String GetJSON(
HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "api") String apiKey,
@RequestParam(value = "jsonstr") String json)
throws ParseException {
System.out.println("JSON :: "+json);
return json;
}
Примечание: дальнейшие вхождения ошибок синтаксического анализа заголовка HTTP будут регистрироваться на уровне DEBUG. java.lang.IllegalArgumentException: в цели запроса обнаружен недопустимый символ. Допустимые символы определены в RFC 7230 и RFC 3986.
Обратите внимание, что &&, вероятно, должен быть &.




Создайте pojo, имеющее 2 свойства: имя и возраст.
public class Test{
private String name;
private Integer age;
//getter and setters
}
затем измените свой контроллер, чтобы он принимал json в запросе, и измените метод запроса на публикацию
@RequestMapping(value = "/GetJSON", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody String GetJSON(
HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "api") String apiKey,
@RequestBody Testjson testJson)
throws ParseException {
Зачем менять ПОЛУЧАТЬ на ПОЧТА
если вы используете requestbody, тогда метод запроса должен быть опубликован
Спасибо. Как я могу вызвать этот контроллер с помощью URL? локальный: 8080 / sajan-spr-hib /… {"name": "myname", "age": "20"}
Для методов POSt вы не можете использовать URL-адрес браузера, для вызова URL-адреса публикации вы можете использовать POST MAN или написать код Java
@SpringLearner Вопрос в том, как метод GET принимает строковый аргумент json, и я не думаю, что его следует менять на публикацию
@RequestBody (value = "jsonstr") Test Testjson Получена ошибка при "значении"
Ошибка Soleved. Я меняю метод post на get. Но как мне вызвать этот почтовый контроллер из почтальона?
api = asdf23 ** && ** jsonstr = {"name": "myname", "age": "20"}
Вам нужен только один &
вы также можете использовать gson 2.2.2 jar
RequestMapping(value = "/GetJSON", method = RequestMethod.GET)
public @ResponseBody String GetJSON(
HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "api") String apiKey)
throws ParseException {
Gson gson=new Gson();
Emp emp=new Emp();
String json =gson.tojson(emp);
System.out.println("JSON :: "+json);
return json;
}`
Я бы рекомендовал не использовать параметр URL для передачи всего объекта JSON, а использовать метод POST и поместить JSON в тело. Однако, если у вас есть причины использовать GET с json в качестве параметра url, воспользуйтесь этой ссылкой на кодировать Http URL должным образом.
В вашем случае ваш объект JSON будет выглядеть так:
api%3Dasdf23%26jsonstr%3D%7B%22name%22%3A%22myname%22%2C%22age%22%3A%2220%22%7D
Передайте HTTP-запрос JSON
ниже только для примера:
jsonstr = {"name": "myname", "age": "20"} url: 80 / GetJSON? jsonstr =% 7B% 22name% 22% 3A% 22myname% 22% 2C% 22age% 22% 3A% 2220% 22% 7D
для получения дополнительной информации о кодировке URL см. ниже
Percent-encoding, also known as URL encoding, is a mechanism for encoding information in a Uniform Resource Identifier (URI) under certain circumstances. Although it is known as URL encoding it is, in fact, used more generally within the main Uniform Resource Identifier (URI) set, which includes both Uniform Resource Locator (URL) and Uniform Resource Name (URN). As such, it is also used in the preparation of data of the application/x-www-form-urlencoded media type, as is often used in the submission of HTML form data in HTTP requests.
Какая у вас проблема с вашим текущим кодом?