我有一個HTTP服務器響應POST請求返回大的正文(它是一個SOAP服務器)。這些機構通過分塊「流」。如果在響應流式傳輸過程中遇到錯誤,我如何向客戶端報告錯誤並保持連接打開?該實現使用專有的HTTP/SOAP堆棧,所以我對HTTP協議級別的答案感興趣。如何在不關閉連接的情況下通過分塊的http repsonse中途報告錯誤?
3
A
回答
2
一旦服務器將狀態行(響應的第一行)發送到客戶端,就不能再更改響應的狀態碼。許多服務器通過在內部緩衝來延遲發送響應,直到緩衝區滿。在緩衝區填滿時,您仍然可以改變主意。
如果您的客戶端有權訪問響應頭,則可以使用分塊編碼允許服務器在分塊編碼主體後添加帶有頭的尾部的事實。因此,遇到錯誤的服務器可以優雅地停止發送主體,然後發送一個將某個標頭設置爲某個值的預告片。然後,您的客戶會將此標題的存在解釋爲發生錯誤的標誌。
+0
我曾希望談判交付「替代」身份的一些慣例。例如。將其推入最終的零大小塊的擴展中(0之後; \ r \ n \ r \ n之前)。 – 2008-10-02 21:34:53
0
只要response.iscommitted()返回false,您就可以更改狀態碼。 (fot HttpServletResponse在java中,我確定在其他語言中存在一個等價物)
2
還要記住,分塊響應可以包含"footers",它們就像HTTP頭一樣。失敗後,您可以發送一個頁腳,例如:
X-RealStatus: 500 Some bad stuff happened
或者,如果你成功了:
X-RealStatus: 200 OK
相關問題
- 1. 如果我願意關閉連接,如何通過分塊的http repsonse中途報告錯誤?
- 2. 如何在不讀取的情況下關閉持久HTTP連接
- 3. 在什麼情況下需要關閉HTTP連接?
- 4. 如何在不返回index.html的情況下關閉警報?
- 5. 如何在不關閉tkinter的情況下關閉pygames?
- 6. 如何在不關閉窗口的情況下關閉文檔?
- 7. 是否可以在沒有任何響應的情況下關閉http連接?
- 8. 如何在不關閉主程序的情況下關閉jframe
- 9. 在不關閉其中一個的情況下生成多個報告
- 10. 警報對話框在不按下的情況下關閉anything_android
- 11. Scrapy在什麼情況下拋出「連接已關閉乾淨」的錯誤?
- 12. TCP/IP在不關閉連接的情況下連續接收消息
- 13. PHP錯誤報告關閉
- 14. 關閉php關閉錯誤報告
- 15. 在xampp中關閉php錯誤報告?
- 16. 如何關閉HTTP連接?
- 17. 如何在asp.net中關閉HTTP連接?
- 18. 在不關閉連接的情況下更改C#中的波特率
- 19. 如何在黑莓的情況下優化http連接?
- 20. 在非空「200 OK」有效後關閉連接的情況?
- 21. 是否可以在不關閉流的情況下關閉Reader?
- 22. 如何在沒有完整的字節數組的情況下關閉連接
- 23. 如何在不使用ANT的情況下生成xslt報告
- 24. XPending()報告錯誤的窗口關閉
- 25. 如何在不通過模板連接的情況下收聽ContentChild事件?
- 26. 在vxworks中連接報告錯誤13
- 27. 如何在不關閉文件的情況下覆蓋文件
- 28. 如何在沒有關閉連接的情況下獲取Bak文件或MDF?
- 29. 如何在程序終止的情況下關閉端口?
- 30. 何時關閉http連接
馬克,我做了一個更新我原來的職位。但是,我不知道你是否會注意到它,因爲你已經將答案標記爲已接受。此評論在此處通過出現在您帳戶的「回覆」標籤中獲得您的關注... – Alexander 2008-10-02 21:39:59