2013-03-04 2 views
2

Я уже использовал ServiceStack для создания службы REST, с которой может взаимодействовать Android-устройство - настолько хорошо, что я могу ПОЛУЧИТЬ DTO в службу поддержки и успешно сэкономить ... проблема, с которой я столкнулась, - это вернуть статус возврата, чтобы уведомить приложение Android о том, что произошло!ServiceStack - Возвращение HttpStatus на Android-устройство

ResponseEntity <HttpStatus> responseEntity = restTemplate 
        .exchange (requestUrl, 
           HttpMethod.POST, 
           requestEntity, 
           HttpStatus.class); 
/* Never gets to this bit, always throws a runtime exception */ 
Log.i (TAG, "responseEntity.getStatusCode() --> '" + responseEntity.getStatusCode() + "'"); 
return responseEntity.getStatusCode(); 

И мой C# код для службы отдыха является ...

public object Post(RegisteredDeviceDto registeredDeviceDto) 
{ 
    Debug.WriteLine("RegisteredDeviceRestService::POST::RegisteredDeviceDto (RegisteredDeviceAdd)"); 
    if (registeredDeviceDto != null) 
    { 
     Debug.WriteLine("DeviceToAdd:" + registeredDeviceDto.ToString()); 
     RegisteredDeviceDomainObject registeredDeviceToAdd = 
     _DtoToDomainObject.registeredDeviceDtoToDomainObject(registeredDeviceDto); 

     _RegisteredDeviceDao.saveDomainObject(registeredDeviceToAdd); 
     return new HttpResult(new object(), "JSON", HttpStatusCode.OK); 
    } 
} 

Даже если только с помощью простого «вернуться HttpStatus.OK» Я все еще получаю исключение во время выполнения в моем андроид приложения, но все идет на сервер и сохраняется хорошо ... любопытно, как у меня возникают проблемы с кодом ответа: P

Как всегда, любая помощь очень ценится !!

+0

Забыл упомянуть - я использую Spring Framework для Android в качестве моего провайдера отдыха! – KingTravisG

ответ

2

Я не знаком с Android или весной, но я думаю, что есть проблема с тем, как ваш запрос ServiceStack преобразуется/десериализируется в Android/Spring ResponseEntity <HttpStatus>. HttpStatus выглядит как ENUM, и, если я понимаю документацию здесь - http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/ResponseEntity.html-, похоже, что вы пытаетесь преобразовать тело ответа в HttpStatus ENUM. Может быть, попробуйте ResponseEntity<String>?

+0

Да, я думаю, что я тоже это пробовал, но я просто получал пустую строку ... вроде нового для REST и Spring, поэтому, без сомнения, это что-то действительно глупое, что я делаю! – KingTravisG

+0

Yep меняет его на String, и я смог получить код состояния и заголовки ответов из ResponseEntity :) – KingTravisG

+0

Также получается на стороне C#, с ServiceStack мне пришлось использовать «base.Response.StatusCode = (целое) HttpStatusCode.Conflict;» для изменения кода ответа, теперь на стороне Android я могу получить этот код состояния из заголовков ответов – KingTravisG

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