parse mvc example json spring spring-mvc

parse - spring mvc json response example



406 Spring MVC Json, no aceptable segĂșn los encabezados de solicitud "aceptar" (6)

Agregue el siguiente jar a su archivo pom.xml que se requiere para Spring 4.1. *

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.4.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.1.1</version> </dependency>

tener los siguientes detalles en mi pom.xml

<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.1.1</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.5</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>3.0.5</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.1.RELEASE</version> </dependency> <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1</version> </dependency>

application-config.xml:

<context:component-scan base-package="com.test" /> <mvc:annotation-driven /> <!-- <mvc:default-servlet-handler /> --> <mvc:resources mapping="/resources/**" location="/resources/" />

Página JSP:

<form:form method="POST" action="/QuickBooks-UX/syncAccounts"> <input type="submit" value="Sync Account"/> </form:form>

Controlador:

@Controller @RequestMapping("/") public class QuickBooksController { @RequestMapping(value = "/quickBooks", method = RequestMethod.GET) public String qucikBooks(ModelMap model) { logger.info("Welcome to QuickBooks controller"); model.addAttribute("message", "Hello Spring MVC Framework!"); return "quickBooks"; } @RequestMapping(value ="/syncAccounts", method = RequestMethod.POST) public @ResponseBody List<SyncData> syncAccounts(@ModelAttribute("syncData")SyncData syncData, ModelMap model, BindingResult result) { List<SyncData> syncDataList = new ArrayList<SyncData>(); try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet getRequest = new HttpGet( "http://localhost:8292/qbsyncdata/getAccounts"); getRequest.addHeader("accept", "application/json"); HttpResponse response = httpClient.execute(getRequest); if (response.getStatusLine().getStatusCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); } BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent()))); while ((output = br.readLine()) != null) { JSONParser jsonParser = new JSONParser(); JSONArray jsonArray = (JSONArray)jsonParser.parse(output); for (Object object : jsonArray) { JSONObject jsonObject = (JSONObject)object; syncData = new SyncData(); syncData.setAccountName(jsonObject.get("accountName")==null?"":jsonObject.get("accountName").toString()); syncData.setAccountType(jsonObject.get("accountType")==null?"":jsonObject.get("accountType").toString()); syncData.setAccountSubType(jsonObject.get("accountSubType")==null?"":jsonObject.get("accountSubType").toString()); syncData.setActive(jsonObject.get("active")==null?"":jsonObject.get("active").toString()); syncDataList.add(syncData); } model.addAttribute("syncData", output); } httpClient.getConnectionManager().shutdown(); } catch (Exception e) { e.printStackTrace(); } } return syncDataList; } }

Invoco mi url como:

http://lt-50k7sy1:8080/QuickBooks-UX/quickBooks

Después de hacer clic en el botón, que devuelve la url como http://lt-50k7sy1:8080/QuickBooks-UX/syncAccounts devuelve 406 y la descripción es:

el recurso identificado por esta solicitud solo es capaz de generar respuestas con características no aceptables de acuerdo con los encabezados de "aceptación" de la solicitud

He seguido este enlace , pero no hay resultados.


Gracias, resolvió mi problema. Finalmente terminé con un pom.xml como este:

<!-- Json dependency --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.4.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.1.1</version> </dependency> <!-- Json dependency -->


Deshágase de estos problemas agregando @EnableWebMvc en la clase Controlador.

@Controller @RequestMapping("/API/course") @EnableWebMvc public class CourseController { @Autowired private com.item.DAO.CourseRepository courseRepository; @ResponseStatus(value=HttpStatus.OK) @RequestMapping(method=RequestMethod.GET) public @ResponseBody List<Course> getListOfCourse(){ List<Course> courses = courseRepository.getListOfCourse(); return courses ; }

o agregue la siguiente línea en el archivo de configuración xml si la configuración XML se está utilizando en su proyecto.

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <mvc:annotation-driven /> <bean>

y agregue las siguientes dependencias en su archivo pom.xml: -

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.1.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.4.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.4.1</version> </dependency>


Use la dependencia a continuación en su trabajo de pom con la primavera 4.

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version> </dependency>


Me funcionó con las dependencias de abajo y @EnableWebMvc en mi RestController. Por favor, vea que acabo de agregar la dependencia de jackson-databind .

<properties> <spring-version>4.2.1.RELEASE</spring-version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version> </dependency> </dependencies>


Tal vez todos los campos de tu POJO necesitan Getter y Setter.

Lo arreglé de acuerdo con este problema: referencia: Spring MVC - HttpMediaTypeNotAcceptableException

Y 406 no es un mensaje útil para arreglar el error. Debes depurar los códigos y ver cuál es la Excepción en la tierra.