2015-03-21 2 views
0

Я начинающий в android.I нужно вызвать весенний веб-сервис в моем проекте Android, который возвращает объект класса как response.Below - это код, используемый для вызова веб-службы.Нет подходящего HttpMessageConverter для Respose

int nID=4; 
RestTemplate restTemplate=new RestTemplate(); 
CoaAccountList accList=restTemplate.getForObject("http://localhost:8080/SpringProject/getCoaList/{parentId}", CoaAccountList.class, nID); 

Ниже приведен код контроллера, в котором веб-служба попадет в цель.

@RequestMapping(value = "/getCoaList/{parentId}",method = RequestMethod.GET) 
public @ResponseBody CoaAccountList getCoaList(@PathVariable(value ="parentId") Integer parentId) { 
    try{ 
     System.out.println("coaacclist "); 
     CoaAccountList coaAccList=new CoaAccountList(); 
     List<COAAccount> accountList= saveitDao.getAccounts(parentId); 
     coaAccList.setCoaList(accountList); 
     return coaAccList; 
    }catch(Exception e){ 
     System.out.println("Exc on list "+e); 
     return null; 
    } 
} 

Im получение: -

org.springframework.web.client.ResourceAccessException: Could not extract response: no suitable HttpMessageConverter found for response type[com.example.myandroidproject.CoaAccountList] and content type [application/json]. 

Я не знаю, как преобразовать этот ответ в объект CoaAccountList в android.How, чтобы сделать это? Пожалуйста, помогите мне. У меня также есть еще один веб-сервис, который возвращает jsonstring, который работает отлично.

String accList=restTemplate.getForObject("http://localhost:8080/SpringProject/getAllAccounts/{parentId}", String.class, nID); 

Ниже приведен файл конфигурации весны.

сервлет-context.xml:

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

<context:annotation-config /> 
<mvc:annotation-driven /> 
<context:component-scan base-package="com.example.save" /> 

<!-- <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/view/" /> 
    <property name="suffix" value=".jsp" /> 
    <property name="order" value="1" /> 
</bean> --> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/> 

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/layouts/layouts.xml</value> 
      <value>/WEB-INF/layouts/views.xml</value> 
     </list> 
    </property> 
</bean> 

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
<property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
<property name="url" value="jdbc:mysql://localhost:3306/SpringProject"/> 
<property name="username" value="root"/> 
<property name="password" value="password"/> 
<property name="validationQuery" value="SELECT 1"/> 
</bean> 

<!-- Hibernate Session Factory --> 
<bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
<property name="dataSource" ref="myDataSource"/> 
<property name="packagesToScan"> 
    <array> 
    <value>com.example.save</value> 
    </array> 
</property> 
<property name="hibernateProperties"> 
    <value> 
    hibernate.dialect=org.hibernate.dialect.MySQLDialect 
    </value> 
</property> 
</bean> 
<!-- Hibernate Transaction Manager --> 
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
<property name="sessionFactory" ref="mySessionFactory"/> 
</bean> 

<mvc:resources mapping="/resources/**" location="/WEB-INF/resources/" /> 
<!-- Activates annotation based transaction management --> 
<tx:annotation-driven transaction-manager="transactionManager"/> 

</beans> 
+0

Возможно, вы опубликуете также конфигурацию пружины? Какой вид реверсивного источника вы используете? –

+0

Я думаю, что проблема заключается в преобразовании ответа to CoaAccountList – KJEjava48

ответ

1

Как я канистра и ее использование TilesViewResolver; этот viewResolver пытается ответить в HTML; Я предлагаю вам использовать org.springframework.web.servlet.view.ContentNegotiatingViewResolver (статья доступна здесь Spring ContentNegotingViewResolver

В основном речь идет, что пружина пытается ответить в HTML, так как вы используете TilesViewResolver, вам нужно, вместо этого ответ JSON В этом ответе типа «mix» ContentNegotiationViewResolver может помочь вам

+0

Так что мне нужно добавить ContentNegotiationViewResolver в мой файл конфигурации spring.right? Тогда мне нужно добавить любые конвертеры на стороне android, где веб-служба называется – KJEjava48

+0

Как настроить этот Spring ContentNegotingViewResolver для моего случая. Можете ли вы объяснить это – KJEjava48

Смежные вопросы