POST 요청 (SOAP 서버)에 대한 응답으로 큰 본문을 반환하는 HTTP 서버가 있습니다. 이 몸체는 청크를 통해 "스트리밍"됩니다. 응답을 스트리밍하는 도중 오류가 발생하면 클라이언트에 오류를보고하고 연결을 계속 열어 둘 수 있습니까? 이 구현은 독점적 인 HTTP/SOAP 스택을 사용하므로 HTTP 프로토콜 수준의 응답에 관심이 있습니다.연결을 닫지 않고 청크라 진 http repsonse를 통해 오류를보고하는 방법은 무엇입니까?
답변
서버가 상태 줄 (응답의 첫 번째 줄)을 클라이언트에 보내면 응답의 상태 코드를 더 이상 변경할 수 없습니다. 많은 서버는 버퍼가 가득 찰 때까지 내부적으로 버퍼링하여 응답을 보내는 것을 지연합니다. 버퍼가 채워지는 동안에도 응답에 대해 마음이 바뀔 수 있습니다.
클라이언트가 응답 헤더에 액세스 할 수있는 경우 청크 인코딩을 사용하면 서버가 청크 인코딩 된 본문 뒤에 헤더가있는 예고편을 추가 할 수 있습니다. 따라서 서버에서 오류가 발생하면 정상적으로 본문 전송을 중단 한 다음 일부 헤더를 일부 값으로 설정하는 예고편을 보낼 수 있습니다. 그러면 클라이언트는이 헤더의 존재를 오류가 발생했다는 신호로 해석합니다.
"대체"상태 전달을 협상하기위한 협약이 있었으면합니다. 예 : 최종 0 크기 청크의 확장 (0 이후, \ r \ n \ r \ n 이전)으로 밀어 넣습니다. –
예,이 아이디어는 나에게도 발생했습니다 (하지만 원래 게시물 직후). 내가 추가 한 두 번째 단락을보십시오. – Alexander
response.iscommitted()가 false를 반환하는 한 상태 코드를 변경할 수 있습니다. (자바에서는 HttpServletResponse이 (가) 있습니다. 다른 언어로도 해당되는 것이 틀림 없음)
청크 분할 응답에는 HTTP 헤더와 마찬가지로 "footers"이 포함될 수 있습니다. 실패하면 같은 바닥 글을 보낼 수 있습니다
X-RealStatus: 500 Some bad stuff happened
또는 당신은 성공할 경우 :
X-RealStatus: 200 OK
- 1. TcpClient.Close가 연결을 닫지 않습니다.
- 2. 무스 생성자에서 오류를보고하는 방법은 무엇입니까?
- 3. 안드로이드 SQLite 연결을 닫지 마십시오
- 4. .NET에서 HTTP 연결을 처리하는 방법은 무엇입니까?
- 5. 클라이언트가 연결을 끊었을 때 HTTP 프록시/FastCGI/SCGI가 연결을 닫지 않습니다 - 버그 또는 기능?
- 6. 연결을 닫지 않고 C#에서 전송 속도를 변경하십시오.
- 7. .NET에서 나가는 HTTP 연결을 모니터링하는 방법은 무엇입니까?
- 8. android ndk와 http 연결을 만드는 방법은 무엇입니까?
- 9. LINQ to SQL DB 연결을 닫지 않음
- 10. 소켓을 닫지 않고 비동기 읽기/쓰기를 취소하는 방법은 무엇입니까?
- 11. 전체 프로그램을 닫지 않고 JTextFields에서 변수를 지우는 방법은 무엇입니까?
- 12. urllib2 시간이 초과되었지만 소켓 연결을 닫지 않습니다.
- 13. 다른 JFrame을 닫지 않고 닫으시겠습니까?
- 14. 앱을 닫지 않고 Safari에서 링크를여시겠습니까?
- 15. 파이썬에서 Http 연결을 조롱하다
- 16. PHP에서 연결을 닫지 만 스크립트를 계속 실행하십시오.
- 17. asp.net에서 HTTP 연결을 닫는 방법?
- 18. 모든 HTTP 연결을 닫습니다.
- 19. java에서 socket을 통해 HTTP 응답을받는 방법은 무엇입니까?
- 20. 기본 소켓을 닫지 않고 SSL을 종료 하시겠습니까?
- 21. 수정, HTTP 연결을 차단하십시오.
- 22. iOS의 여러 스레드간에 HTTP 연결을 재사용하고 공유하는 방법은 무엇입니까?
- 23. Apache HTTP 클라이언트 등록 정보와의 연결을 해제하는 방법은 무엇입니까?
- 24. AsyncTask 클래스를 사용하여 HTTP 연결을 만드는 방법은 무엇입니까?
- 25. HTTP 1.1 영구 연결을 사용하고 PHP에서 파이프 라이닝하는 방법은 무엇입니까?
- 26. lwuit을 사용하여 정지 가능한 http 연결을 사용하는 방법은 무엇입니까?
- 27. Android에서 휴대 전화 대신 Wi-Fi를 통해 HTTP 연결을 강제 설정하는 방법은 무엇입니까?
- 28. HTTP 연결을 종료하는 데 필요한 조건은 무엇입니까?
- 29. 오류가 발생하지 않고 스레딩을 통해 동일한 데이터베이스에 여러 SQL 연결을 인스턴스화하는 방법은 무엇입니까?
- 30. SharePoint 워크 플로에서 오류를보고하는 가장 좋은 방법은 무엇입니까?
마크, 내 원래의 게시물에 대한 업데이트를했다. 하지만 이미 답을 표시 했으므로 알 수 있는지 여부는 알 수 없습니다. 이 댓글은 귀하의 계정의 응답 탭에 표시되어 귀하의 관심을 끌기위한 것입니다 ... – Alexander