服务端接收参考:

# 导包
from odoo import http
class HttpRequest(http.Controller):
@http.route('/url', type='json', auth='public', website=True)
def server_method(self, *args, **kwargs):
# *args, **kwargs接收参数
pass
# route中的参数可以参考odoo/http.py文件里def route(route=None, **kw)方法
# type在这里选择json

提供一个操作model(创建、修改)报权限问题的解决方法:

# 需要导入odoo
import odoo
# http.request.env['model'].create() 前加入下面这句话,会用超级管理员执行操作。若担心问题的话,可以使用登录的方法,这里暂不做演示
http.request.uid = odoo.SUPERUSER_ID
  • 客户端发送参考

  • import requests, json
    data = {"params":param}
    # 这个param代表需要传入的参数,params这个key非常重要,只有带了这个key,服务端才能接受到参数
    # 可以参考odoo/http.py文件里 class JsonRequest(WebRequest) 类,明确说明了
    requests.post(url='http://localhost:8069/url', data=json.dumps(data))
    # 说明一下,resquest中post这个api会根据data的数据类型自动转换请求头里Content-Type对应的参数

或者通过工具postman测试:

最后值得注意的地方

    • 服务端
      type='json'
    • 客户端
      data中一定要加入params
      数据需要转成Json

案例1

如何使用type =’json’在Odoo控制器中获取JSON数据?

但现在,我需要创建一个只接收JSON数据的控制器.所以,我正在通过Python控制台执行请求,这样:

import requests
import json url = 'http://localhost:8069/odoo/test'
headers = {'Content-Type': 'application/json'}
data = {
'name': 'teddy',
'email': 'teddy.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.

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

无效的JSON数据:’name = teddy& email=teddy.doe@gmail.com’或
无效的JSON数据:“{‘name’:’teddy’,’email’:’teddy.doe @ gmail.com’}”.

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

声明的函数能够处理类型为“http”的请求,但是使用类型为“json”的请求进行调用.

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

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

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

忘记将数据放在params关键字中:

使用以下正确的语法:

data = {“params“: dict(key=”value”)}

data = {
"params": {
"name":"prakashsharma",
"email":"prakashsharmacs24@gmail.com",
"phone":"+917859884833"
}
}

在请求json格式的资源时,请不要忘记使用json.dumps(data)和’Content-Type’:’application / json’.

案例来源:http://www.voidcn.com/article/p-kionqzww-bvc.html

odoo controllers 中type="Json" 或type="http"的更多相关文章

  1. Struts2 中 result type=”json” 的参数解释

    转自:http://wangquanhpu.iteye.com/blog/1461750 1, ignoreHierarchy 参数:表示是否忽略等级,也就是继承关系,比如:TestAction 继承 ...

  2. Caused by: The Result type [json] which is defined in the Result annotation on the class

    1.错误描述 严重: Dispatcher initialization failed Unable to load configuration. - [unknown location] at co ...

  3. Jekins 插件Extended Choice Parameter显示Json Parameter Type遇到的问题

    在jenkins中使用Extended Choice Parameter插件用来显示自定义的多选项,尝试通过groovy script来显示,正常,但查看它的例子,发现它例子中多选是通过类型 Json ...

  4. There is no result type defined for type 'json' mapped with name 'success'. Did you mean 'json'?

    错误信息: 严重: Exception starting filter struts2 Unable to load configuration. - action - file:/C:/Users/ ...

  5. swift 中Value Type VS Class Type

    ios 中Value Type 和 Class Type 有哪些异同点,这个问题是在微信的公共帐号中看到的,觉得挺有意思,这里梳理一下. 1.swift 中为什么要设置值类型? 值类型在参数传递.赋值 ...

  6. html5中如何去掉input type date默认

    html5中如何去掉input type date默认样式 2.对日期时间控件的样式进行修改目前WebKit下有如下9个伪元素可以改变日期控件的UI:::-webkit-datetime-edit – ...

  7. python 中的object与type的关系

    object 和 type的关系很像鸡和蛋的关系,先有object还是先有type没法说,obejct和type是共生的关系,必须同时出现的. 在看下去之前,也要请先明白,在Python里面,所有的东 ...

  8. jquery序列化from表单使用ajax提交返回json数据(使用struts2注解result type = json)

    1.action类引入struts2的"json-default"拦截器栈 @ParentPackage("json-default") //示例 @Paren ...

  9. 【转】html5中如何去掉input type date默认样式

    html5中如何去掉input type date默认样式1.时间选择的种类:HTML代码: 选择日期:<input type="date" value="2017 ...

随机推荐

  1. 基于Typescript的Vue项目配置国际化

    基于Typescript的Vue项目配置国际化 简介 使用vue-i18n插件对基于Typescript的vue项目配置国际化,切换多种语言, 配合element-ui或者其他UI库 本文以配置中英文 ...

  2. Docker系列——Grafana+Prometheus+Node-exporter钉钉推送(四)

    近期搭建的服务器监控平台,来进行一个总结.主要分为监控平台的搭建.告警中心的配置以及消息的推送.推送的话,支持多种终端.具体详细可查看之前的博文,在这里罗列下,方便查看. Docker系列--Graf ...

  3. Spring Cloud Gateway简单入门,强大的微服务网关

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 见名知义,Spring Cloud Gateway是用于微服务场景的网关组件,它是基于Spring WebFlu ...

  4. Spring Boot WebFlux-01——WebFlux 快速入门实践

    第01课:WebFlux 快速入门实践 Spring Boot 2.0 spring.io 官网有句醒目的话是: BUILD ANYTHING WITH SPRING BOOT Spring Boot ...

  5. 懒人 IDEA 插件推荐:EasyCode 一键帮你生成所需代码

    Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大. 1.安装(EasyCode) 我这里的 ...

  6. Android开发回收bitmap引发Canvas: trying to use a recycled bitmap错误处理

    当你的应用由于加载大量图片出现OOM异常时,肯定会上网搜索关于OOM的文章,并导求相应的解决方案,比如压缩图片大小,或手动回收资源什么的.在这里我们不讨论图片压缩或缓冲这些方法,而是讨论一下手动回收B ...

  7. Go语言深度比较值是否相等

    Go语言深度比较值是否相等 需求描述: 我们在开发过程中经常会遇到一些需要比较值是否相等的场景,例如比较两个数组.结构体.Map.等,自己写这些代码比较繁琐,大部分时候这里都可以使用到反射reflec ...

  8. 多元统计之因子分析模型及Python分析示例

    1. 简介 因子分析是一种研究观测变量变动的共同原因和特殊原因, 从而达到简化变量结构目的的多元统计方法. 因子分析模型是主成分分析的推广, 也是利用降维的思想, 将复杂的原始变量归结为少数几个综合因 ...

  9. buu 相册

    一.拖入jeb,这个神器里面,感觉对jeb使用还是不熟悉,对我逆向产生了一些障碍. 抓住题目给的提示,邮箱,全局直接搜索,mail. 看下它的交叉引用 找到了发邮件的方法, C2的MAILFROME说 ...

  10. [期望DP][纪中]【2010集训队出题】彩色圆环

    彩色圆环 感谢名单 十分感谢 JA_Ma 为我讲解了 \(T1\) 的 期望DP 的思想和推论. 十分感谢 SSL_LYF 为我解答了 \(T1\) 的 期望DP 的概率的大小问题. 十分感谢 SSL ...