Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    【已解决】如何在Controller中获取application/json的body数据?

    Odoo 开发与实施交流
    3
    8
    1475
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 水
      水在时间之下 最后由 水在时间之下 编辑

      在定义好controller后,将类型定义为 json,如果获取别人请求的数据?
      @http.route('/test', auth='none', type='json', csrf=False)
      def test(self, **kw)
      _logger.info('The controller is worked')
      return {'code': 200}

      在这里获取kw是空的,如何获取到请求里的数据?

      1 条回复 最后回复 回复 引用 0
      • 水
        水在时间之下 最后由 编辑

        @digitalsatori @hui

        1 条回复 最后回复 回复 引用 0
        • G
          guwenfengvip163.com 最后由 编辑

          ''' http.request.httprequest.data ''' 试试这个

          水 1 条回复 最后回复 回复 引用 0
          • 水
            水在时间之下 最后由 编辑

            空的,没取出来,我用postman模拟发送的请求
            0_1535018528314_836d50aa-b8e9-4b8f-8146-f5afb2b1444b-image.png
            但是取出来的是空的

            1 条回复 最后回复 回复 引用 0
            • 水
              水在时间之下 @guwenfengvip163.com 最后由 编辑

              @guwenfengvip163-com

              1 条回复 最后回复 回复 引用 0
              • 水
                水在时间之下 最后由 编辑

                Controller写法还是有问题,因为请求的机制不同,请求的数据是一个json而且不再url后面,也不在post的data里面,二十直接封装在请求的body体里面,故此,需要拿到请求体,这里也是@guwenfengvip163-com的回帖给了我启发,谢谢!我把controller做了以下改进|:
                @http.route('/test', auth='none', type='json', csrf=False)
                def test(self, request, **kw)
                params = request.jsonrequest
                _logger.info(params)
                return {'code': 200}
                修改是:
                首先在参数里面加上了request,再就是通过request.jsonrequest拿到请求体,其实拿到的请求体,就是访问的json数据。
                说点废话:kw里面是空的,取不到任何值,有兴趣的可以研究研究,如果kw里面有值,是怎么传进去的,又是何种请求方式。
                最后,谢谢大家的帮助!

                1 条回复 最后回复 回复 引用 1
                • digitalsatori
                  digitalsatori 管理员 最后由 编辑

                  请求端的json数据构造为下面的格式,试试:

                  jsondata = '{"params": YourdataDictHere}'
                  

                  【上海先安科技】(tony AT openerp.cn)

                  水 1 条回复 最后回复 回复 引用 0
                  • 水
                    水在时间之下 @digitalsatori 最后由 编辑

                    @digitalsatori 其实请求端我控制不了,是电信平台的,我只是在他们平台设置了一个回调地址,然后我这边用controller实现。然后按电信平台的要求写的,请求方式是https,post,类型是application/json,不过已经都解决啦,谢谢

                    1 条回复 最后回复 回复 引用 0
                    • First post
                      Last post