2

Spring for Android RestTemplate クラスを使用してオブジェクトを送信しています。有効な JSON を送信し (あらゆる方法でチェックしました)、http ヘッダーとコンテンツ タイプは正しいです。

オブジェクトの送信:

try {
            Event event = new Event();
            // Set event parameters.
            RestTemplate restTemplate = new RestTemplate();
            String url = Const.ADD_EVENT_REQUEST + Const.getRequiredRequestParameters(app);
            return restTemplate.postForObject(url, event, Boolean.class);
        } catch (Exception e) {
            Log.e("Add event task", e.getMessage(), e);
            return false;
        }

サーバーでオブジェクトを受け取る:

@RequestMapping(value = "/add", method = RequestMethod.POST)
    public @ResponseBody Boolean createEvent(@RequestBody Event event) {
        try {
            Logger.getLogger(EventRestAction.class).info("saving event " + event);
            eService.save(event);
            return true;
        } catch (Exception e) {
            Logger.getLogger(EventRestAction.class)
            .error(e.getMessage(), e);
            return false;
        }
    }

「保存イベント」ログは出力されません。サーバーは 415 Unsupported media type エラーを返します。

念のため、ここにdispatcher-servlet.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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

    <context:component-scan base-package="ee.lapikud.ttyapp" />
    <mvc:annotation-driven />

    <mvc:interceptors>
        <bean class="ee.lapikud.ttyapp.interceptor.RequestSecurityInterceptor" />
    </mvc:interceptors>


</beans>

質問はかなり広いですが、私はかなり行き詰まっています - これの原因は何ですか?

4

1 に答える 1

1

これは間違いなくcontent-typeHTTP リクエスト/レスポンスのヘッダーによるものです。application/jsonそれらが両方の方法であることを確認できますか?

Udpate : 最終的に機能した Spring 構成 (コメント)

<bean
      class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="order" value="1"/>
    <property name="mediaTypes">
      <map>
        <entry key="json" value="application/json"/>
      </map>
    </property>
    <property name="defaultContentType" value="application/json"/>
    <property name="defaultViews">
      <list>
        <bean
            class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
      </list>
    </property>
    <property name="ignoreAcceptHeader" value="true"/>
  </bean>
于 2012-04-17T18:24:51.833 に答える