Robospice中的饼干

时间:2015-01-08 07:47:52

标签: cookies robospice

我想在Robospice中使用cookies,我有香料服务:

    public class JsonSpiceService extends SpringAndroidSpiceService {

    public RestTemplate createRestTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        MappingJacksonHttpMessageConverter jsonConverter = new MappingJacksonHttpMessageConverter();
        FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
        StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
        final List<HttpMessageConverter<?>> listHttpMessageConverters = restTemplate.getMessageConverters();
        HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
        restTemplate.setRequestFactory( httpRequestFactory );
        listHttpMessageConverters.add(jsonConverter);
        listHttpMessageConverters.add(formHttpMessageConverter);
        listHttpMessageConverters.add(stringHttpMessageConverter);
        restTemplate.setMessageConverters(listHttpMessageConverters);
        return restTemplate;
    }

    public CacheManager createCacheManager(Application application) throws CacheCreationException {
        CacheManager cacheManager = new CacheManager();

        List< Class< ? >> classCollection = new ArrayList< Class< ? >>();
        classCollection.add(User.class);
        JacksonObjectPersisterFactory jacksonObjectPersisterFactory = new JacksonObjectPersisterFactory(application);
        cacheManager.addPersister(jacksonObjectPersisterFactory);

        return cacheManager;
    }
}

和我的Request类:

public class Request extends SpringAndroidSpiceRequest<HttpModel> {
private Context context;
private HttpMethod httpMethod;
private MultiValueMap<String, String> body;
private String link;
private String what;
private Object object;

public Request(Context context, HttpMethod httpMethod, MultiValueMap<String, String> body, String link, String what, Object object) {
    super(HttpModel.class);
    this.context = context;
    this.httpMethod = httpMethod;
    this.body = body;
    this.link = link;
    this.what = what;
    this.object = object;
}

@Override
public HttpModel loadDataFromNetwork() throws Exception {
    HttpModel httpModel;
    HttpHeaders headers = new HttpHeaders();
    HttpEntity<?> requestEntity;
    if (!what.equals(LOGIN)) {
        headers.setContentType(MediaType.APPLICATION_JSON);
    } else {
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    }
    requestEntity = new HttpEntity<Object>(body, headers);
    ResponseEntity<HttpModel> responseEntity = getRestTemplate().exchange(link, httpMethod, requestEntity, HttpModel.class);
    httpModel = responseEntity.getBody();

    return httpModel;
}

}

如何从响应中获取cookie?我尝试将CookieManager添加到我的Request类中,但是不要工作:

    final CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);

在postman Cookie中看起来像这样: enter link description here

1 个答案:

答案 0 :(得分:0)

CookieManager仅用于管理应用程序WebView中的Cookie。

您可以使用responseEntity.getHeaders().get(COOKIE)。您还可以尝试使用SET_COOKIESET_COOKIE2个密钥而不是COOKIE,具体取决于您服务器的响应。