나는 다트 서버 응용 프로그램에 대한 몇 가지 테스트를 작성하려고하고 있으며 관련 HttpClientRequest 및 HttpClientResponse 클래스와 함께 HttpClient 클래스를 사용하여 서버에 테스트 요청을 서버를 실행하기 위해 다트 패키지 : io 패키지가 필요하기 때문에이 클래스들을 사용하고 있습니다. 그래서 다트를 가져올 수 없습니다 : html). 이것은 지금까지 상당히 잘 진행되어 왔으며, 테스트는 서버가 올바른 HTTP 상태 코드로 응답을 반환하는지 확인합니다 나는이 시험 통화를 사용하고 코드의 기본입니다 다음과 같습니다.HttpClientResponse에서 응답 본문 가져 오기
Future<HttpClientResponse> makeServerRequest(String method, Uri uri, [String jsonData]) async {
HttpClient client = new HttpClient();
HttpClientRequest request = await client.openUrl(method, uri);
request.write(jsonData);
return request.close();
}
을 지금은 N 상태 코드뿐만 아니라 응답 본문이 올바른지 확인하는 테스트를 작성하십시오. 문제는 HttpClient 클래스에서 응답 본문에 실제로 액세스 할 수있는 것을 찾지 못하는 것입니다. 지금까지 내가 가장 가까이에서 찾을 수 있었던 것은 HttpClientResponse.contentLength 속성이지만 응답 본문의 크기가 실제 크기가 아니라는 것을 알려줍니다.
어떻게 이러한 요청에서 응답 본문을 검색합니까? 또는 당신이 할 수없는 경우, 응답을 읽을 수 있도록 서버 측 응용 프로그램에서 요청을 할 수있는 다른 방법이 있습니까?
완벽한합니다. 나는 [HttpRequest.responseText] (https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:html.HttpRequest#id_responseText)와 비슷한 것을 찾기 위해 열심히 찾고있었습니다. HttpClientResponse 스트림입니다. 빠른 보조 질문 비록 BytesBuilder에서 결과를 디코딩하는 대신 StringBuffer 및 StreamTransformer를 사용하는 이유가 있습니까? –
특별한 이유는 없습니다. 방금 docs에서 사용할 수있는 예제를 개선했습니다 : https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:io.HttpClientResponse. BytesBuilder를 사용하면 더 나은 성능을 얻을 수 있습니다. – luizmineo