2013-06-20 33 views
6

Tôi đang gửi số lượng lớn dữ liệu trong phản hồi của tôi cho khách hàng ở định dạng mã hóa chuyển chunked.Trả lời được gửi bằng mã hóa chuyển chunked và cho biết lỗi xảy ra sau khi một số dữ liệu đã được gửi

Làm cách nào để xử lý bất kỳ lỗi nào xảy ra giữa đường trong khi viết phản hồi?

Tôi muốn biết nếu có bất kỳ thực hành HTTP Spec nào được đề nghị liên quan đến điều này để khách hàng biết rằng thực sự phản hồi không phải là một thành công nhưng máy chủ đã gặp phải một số vấn đề.

Trả lời

5

Khi bạn đã bắt đầu gửi tiêu đề HTTP cho ứng dụng khách, bạn không thể gửi bất kỳ điều gì khác. Bạn phải hoàn thành việc gửi phản hồi bạn định gửi, tức là dữ liệu được chunked và các tiêu đề liên quan. Nếu một lỗi xảy ra giữa chừng đó, không có cách nào để báo cáo lỗi đó cho khách hàng. Tất cả những gì bạn có thể làm là đóng kết nối. Hoặc là khách hàng không nhận được tất cả các tiêu đề, hoặc nó không nhận được đoạn cuối có độ dài 0 ở cuối phản hồi. Dù bằng cách nào cũng đủ để khách hàng biết rằng máy chủ đã gặp lỗi trong khi gửi.

+0

Cảm ơn Remy. Yeah ... đúng, tôi biết rằng các tiêu đề được gửi đầu tiên và không có cách nào để sửa đổi chúng một khi chúng ta bắt đầu viết vào luồng. Như bạn đã đề xuất, tôi hiện đang đóng kết nối, nhưng muốn biết liệu có cách nào khác mà HTTP Spec nói về cách người ta có thể cho khách hàng biết về nó. Đoạn dài 0 thú vị, tôi sẽ kiểm tra xem liệu tôi có thể làm gì đó trong khu vực đó không. –

+0

Chỉ có hai cách bạn có thể cho khách hàng biết rằng đã xảy ra sự cố. Đóng kết nối (đó là những gì bạn nên làm) vì bất cứ điều gì khác hơn là nhận được đoạn cuối cùng dài 0 là một lỗi, hoặc người nào khác đặt một tiêu đề HTTP tùy chỉnh trong footer chunked sau khi gửi cuối cùng 0-lenth chunk. Hầu hết các khách hàng có khả năng sẽ bỏ qua một tiêu đề như vậy mặc dù, nhưng nếu bạn đang viết khách hàng của riêng bạn thì bạn có thể tìm tiêu đề đó. –

+0

Sure..thanks! Remy ... –

Các vấn đề liên quan