#python #xml
#python #xml
Вопрос:
Я знаю, что есть несколько тем для этого, но я не могу найти, что я делаю неправильно. Это код, который выдает ошибку:
print 'Content-Type: text/xml n'
print 'Content-Disposition:attachment;filename="test.qwc" n'
print 'Content-Length:' len(xml)
print xml
переменная xml — это просто строка xml. С xml все в порядке, потому что я могу заставить его печатать в браузере. но когда я добавляю строки Content-Disposition и Content-Length, это выдает мне эту ошибку:
XML Parsing Error: not well-formed
Location: http:/myurl/XMLqwc.py?franchiseid=1
Line Number 1, Column 31:
Content-Disposition:attachment;filename="test.qwc"
------------------------------^
Есть идеи?
Заранее спасибо за помощь!
Комментарии:
1. Что это за «это», которое выдает вам ошибку?
2. Единственное слово, имеющее отношение к вопросу в заголовке или тегах, — «python».
Ответ №1:
- Это не может быть код, который вы использовали для обслуживания XML, потому что
"string" len(whatever)
он гарантированно будет исключением. - Вы добавляете две новые строки вместо одной в каждую строку заголовка, поэтому ваш заголовок будет содержать только первую строку. Заголовок и тело разделены двумя символами новой строки, вы помещаете две сразу после первого заголовка. Остальное отправляется в XML.
- Я бы не использовал
print
ни для чего, кроме простых текстовых форматов. HTTP не так прост (см. 3), вы должны использоватьsys.stdout.write()
вместо этого. - Существуют десятки веб-фреймворков для Python. Вместо этого вам следует рассмотреть их. Некоторые из них очень просты, такие как Werkzeug и web.py .
Ответ №2:
Заголовки и полезная нагрузка всегда должны быть разделены пустой строкой. Строка заголовка content-length даже не содержит строки feed…in добавление целого числа (len()..) к строке выглядит странно.