1

我已经使用 Django Rest Framework 构建了一个 API,以提供来自我的 django 模型的 ical 提要。提要内容经过验证,可在我测试过的所有日历应用程序中运行,iOS 上的 iCal 除外。iOs 上的 iCal 将接受复制/粘贴的内容,但不接受从 url 导入。

我怀疑这个问题的原因是 http-header: transfer-encoding: chunked

我试图找出传输被分块的原因,并查看修复此问题是否允许 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 feed 之外的其他目的,并且在其他情况下,http-header不会被分块。

4

1 回答 1

0

在 iOS 上使用 Content-type: text/calendar 和 iCal 会吃掉它。

我测试过的所有其他验证工具都允许 text/html 和 text/plain ,所以看起来 iOS 非常挑剔......

于 2014-02-11T14:18:14.910 回答