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標頭爲而不是

+0

只是一張紙條:iCal中/的iOS不支持塊傳輸編碼將是一個根據rfc2616,'所有的HTTP/1.1應用程序必須能夠接收和解碼'分塊的'傳輸編碼[...]' – sk1p

回答

0

使用內容類型:文本/日曆和iOS上的iCal會吃掉它。

爲text/html和text/plain的是由所有其他驗證工具,我測試過的允許,如此看來iOS的是很挑剔......