java控制器中的字段截取_如何使用type = 'json'在Odoo控制器中获取JSON数据?

但是现在,我需要创建一个只接收JSON数据的控制器 . 所以,我这样做是从Python控制台做的请求:

import requests

import json

url = 'http://localhost:8069/odoo/test'

headers = {'Content-Type': 'application/json'}

data = {

'name': 'Jane',

'email': 'jane.doe@gmail.com',

}

data_json = json.dumps(data)

r = requests.post(url=url, data=data_json, headers=headers)

import openerp.http as http

from openerp.http import Response

import logging

_logger = logging.getLogger(__name__)

class WebFormController(http.Controller):

@http.route('/odoo/test', type='json',

auth='public', methods=['POST'], website=True)

def index(self, **args):

_logger.info('CONNECTION SUCCESSFUL')

_logger.info(args)

name = args.get('name', False)

email = args.get('email', False)

_logger.info(name)

_logger.info(email)

if not name:

Response.status = '400 Bad Request'

return '{"response": "OK"}'

问题是我在控制器中收到一个空的JSON . 我可以在日志中读取CONNECTION SUCCESFUL,没有错误,但是当我显示 args 时,我得到 {} ,显然由于这个原因, False 在写 name 和 email 时 .

如果我将数据作为Python字典或字符串传递,我会收到以下错误:

分别为 Invalid JSON data: 'name=Jane&email=jane.doe%40gmail.com' 或 Invalid JSON data: "{'name': 'Jane', 'email': 'jane.doe@gmail.com'}" .

如果我修改 type='json' 而我写了 type='http' ,我收到以下错误:

Function declared as capable of handling request of type 'http' but called with a request of type 'json' .

我已经读过,如果使用参数 json 而不是 data 发送请求,可能会解决这个问题,这样:

r = requests.post(url=url, json=data_json, headers=headers)

不幸的是,要发出请求的服务器有一个旧的操作系统无法更新 python-requests 包,所以我不能使用 json 参数,因为它在该服务器上安装的版本中不存在 .

拜托,有人可以帮帮我吗?我需要在控制器中获取JSON数据,而不是Python字典中的字符串 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值