【发布时间】:2014-01-28 03:04:00
【问题描述】:
我有一个使用 CherryPy 框架用 Python 开发的 Web 应用程序。它使用许多传统的 HTML 表单(带有 x-www-form-urlencoded 数据)。
我正在开发一个 iOS 应用程序,我想与 Web 应用程序使用的同一数据库同步。要从 iOS 上传到数据库,我想使用 HTTP POST 方法在 HTTP 请求正文中上传 JSON。
我尝试在我的 Web 应用程序中编写一个方法来处理上传的 JSON 数据。
如果我的 cherrypy.config 看起来像这样
cherrypy.config.update({
'environment': 'production',
'log.screen': False,
'log.access_file': '/home/adamek/webapps/cocoa_foody/logs/access.log',
'log.error_file': '/home/adamek/webapps/cocoa_foody/logs/error.log',
'server.socket_host': '127.0.0.1',
'server.socket_port': 15982,
'tools.caching.on': False,
'tools.encode.encoding': "utf-8",
'tools.json_in.on': True,
})
我的 JSON 页面可以正常工作,但我的 Web 应用程序的其余部分提交的表单失败。
如果我将最后一行更改为 'tools.json_in.on': False, 我的旧表单页面再次工作,但 JSON POST 页面失败(cherrypy.request.json 为无)。
对 JSON 页面的请求在请求标头中有 Content-Type: application/json。
对其他表单页面的请求有 'Content-Type: application/x-www-form-urlencoded '
有没有办法让一个 CherryPy 应用程序同时处理 application/json 和 application/x-www-form-urlencoded,还是我需要两个单独的 CherryPy 应用程序?
【问题讨论】:
-
它应该适用于单个应用程序,因此您需要对其进行调试。 “表单提交失败”是什么意思?
-
这就是我所说的表单提交失败的意思 415 Unsupported Media Type Expected an entity of content type application/json, text/javascript
标签: python json forms post cherrypy