具有特定内容类型的REST请求

时间:2011-06-14 15:58:55

标签: rest windows-phone-7 spring.net

我从this issue开始在WP7上成功使用Spring.net Rest。

我的REST服务需要特定的内容类型。我试图使用另一个请求拦截器,但XElementHttpMessageConverter会覆盖内容类型。

public MyClient(string baseAddress)
{
    restTemplate = new RestTemplate(baseAddress);
    //restTemplate.RequestInterceptors.Add(new NoCacheRequestInterceptor());
    restTemplate.MessageConverters.Add(new XElementHttpMessageConverter());
}

public MyObject GetMyObject(int id)
{
    XElement element = restTemplate.GetForObject<XElement>("path/{id}", id);
    //..
    return myObject;
}

// more methods

1 个答案:

答案 0 :(得分:1)

这样做的最佳方法是使用“SupportedMediaTypes”属性配置转换器:

public MyClient(string baseAddress)
{
    restTemplate = new RestTemplate(baseAddress);
    //restTemplate.RequestInterceptors.Add(new NoCacheRequestInterceptor());

    XElementHttpMessageConverter linqXmlConverter = new XElementHttpMessageConverter ();
    linqXmlConverter.SupportedMediaTypes = new MediaType[] { MediaType.Parse("type/subtype") };
    restTemplate.MessageConverters.Add(linqXmlConverter );
}

顺便说一下,你也可以使用拦截器,但不能拦截请求创建的“IClientHttpRequestFactoryInterceptor”。 您应该使用拦截请求执行的“IClientHttpRequestBeforeInterceptor”。