1
我已經使用Django Rest Framework構建了一個API來爲我的django模型提供ical饋送。 供稿內容經過驗證,適用於我測試過的所有日曆應用程序,但iCal在iOS以外。對iOs的iCal將接受內容,如果複製/粘貼但不接受從url導入。django rest框架(nginx + gunicorn)中的塊傳輸編碼
我懷疑這個問題的原因是HTTP頭:傳輸編碼 :分塊
我試圖找出爲什麼轉讓分塊,並看是否固定,這將允許iOS來閱讀提要。
這裏有一些簡化的代碼:
渲染
from rest_framework import renderers
class ICALRenderer(renderers.BaseRenderer):
media_type = 'text/html'
format = 'ical'
charset = 'utf-8'
def render(self, data, media_type=None, renderer_context=None):
blob = tools.ical_generator(data, 'My calendar name', 'My calendar description')
return blob
tools.ical_generator
def ical_generator(events=[], calname='', caldesc=''):
cal = vobject.iCalendar()
# build header
# iterate over events
# build footer
icalstream = cal.serialize()
return icalstream
音符1:當進行wget的,只有頭和來自ical_generator的頁腳將顯示並且傳輸將不會完成,而是無限期地「掛起」。
注意2:API也用於其他目的而不是ical饋送,並且在其他情況下,http標頭爲而不是。
只是一張紙條:iCal中/的iOS不支持塊傳輸編碼將是一個根據rfc2616,'所有的HTTP/1.1應用程序必須能夠接收和解碼'分塊的'傳輸編碼[...]' – sk1p