Go에서 HTTP 요청 및 텍스트 파일의 응답 구문 분석
소개
이 질문은 구문 분석에 중점을 둡니다. Connection 구조체의 Go 슬라이스에 대한 HTTP 요청 및 응답 스트림이 포함된 텍스트 파일입니다. 각 연결 구조에는 HTTP 요청과 응답이 포함됩니다.
문제 개요
HTTP 요청과 응답이 포함된 텍스트 파일이 주어지면 작업은 이를 []Connection 슬라이스로 구문 분석하는 것입니다. http.ReadRequest 함수를 사용하여 요청을 구문 분석할 수 있습니다. 그러나 응답을 구문 분석하는 내장 기능은 없습니다.
구현
해결 방법은 다음 단계로 구성됩니다.
버퍼 리더 생성:
buf := bufio.NewReader(r)
여기서 r은 텍스트 파일을 나타내는 io.Reader 인스턴스.
반복 구문 분석:
for { req, err := http.ReadRequest(buf)
a. http를 사용합니다. ReadRequest는 다음 요청을 구문 분석합니다. stream.
b. EOF를 확인합니다(err == io.EOF). 도달하면 루프를 중단합니다.
c. 오류가 발생하면 오류와 함께 구문 분석된 스트림을 반환합니다.
응답 구문 분석:
resp, err := http.ReadResponse(buf, req)
응답 본문 처리:
b := new(bytes.Buffer) io.Copy(b, resp.Body) resp.Body.Close() resp.Body = ioutil.NopCloser(b)
스트림 채우기:
stream = append(stream, Connection{Request: req, Response: resp})
루프 종료:
if err == io.EOF { break }
사용 예:
f, err := os.Open("/tmp/test.http") stream, err := ReadHTTPFromFile(f)
결론
이 방법은 텍스트 파일의 HTTP 요청 및 응답을 효과적으로 구문 분석하고 구문 분석된 데이터로 []연결 슬라이스를 채웁니다. . 응답 본문을 올바르게 처리하고 파이프라인 스트림에서 여러 요청과 응답의 올바른 구문 분석을 보장합니다.
위 내용은 Go에서 텍스트 파일의 HTTP 요청과 응답을 어떻게 구문 분석하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!