2017-11-18 3 views
1

요청에서 원래 바이트를 얻는 방법은 무엇입니까? 내가 설정 한 경우요청에서 원래 바이트 가져 오기

asBytes() expected list of bytes, instead got List<_InternalLinkedHashMap<String, dynamic>>

내가 HTTPRequestBody이 경우 사용할 수있는 특성 retainOriginalBytes을 가지고보고 있지만 :이 메시지가 request.body.asBytes()를 호출?

감사합니다.

+0

당신이하는 일에 대한 예제를 보여줄 수 있습니까? 다시 만들 수 있습니다. 나는 적어도 오류 메시지가 더 좋아야한다고 말하고 싶다. – lrn

+0

'request.body.as Bytes()'가 컨트롤러의 어디에서나 호출 할 때이 메시지가 발생합니다. 'retainOriginalBytes'를 사용하여 문제가 올바르게 해결되었습니다. –

답변

0

요청에 부딪히는 모든 끝점은 본문에있는지도를 반환하며 바이트 목록은 반환하지 않습니다.

반환 할 끝점의 콘텐츠를 제어 할 수 있는지 여부는 확실치 않지만 가능한 경우 변경할 수있는 위치인지 확인해야합니다.

BytesBuilder 클래스를 확인하십시오. 또한에 대한 Aqueduct 문서를 읽으십시오. 바라기를 이것은 바른 길에 당신을 얻는다!

0

올바른 길을 가고 있습니다. retainOriginalBytes을 true로 설정하면 올바르게 작동합니다. 이것은 시체가 해독되기 전에 완료되어야합니다.

HTTPController에서 요청 본문은 요청을 처리하는 메서드가 호출되기 전에 디코딩됩니다. 디코딩 직전에 HTTPControllerwillDecodeRequestBody() 메서드를 호출합니다. 이 방법은 기본적으로 아무것도하지 않는다, 그러나 당신은 retainOriginalBytes을 설정 재정의 할 수

@override 
void willDecodeRequestBody(HTTPRequestBody body) { 
    body.retainOriginalBytes = true; 
} 

Here는이 작업을 수행하는 응용 프로그램의 예입니다.

+0

안녕하세요, 작동합니다! 감사! –