Python Bottle API使用外部API访问时没有Json响应

时间:2013-07-01 11:56:46

标签: php python api rest bottle

我使用瓶子为openerp创建了一个api并且工作正常。

每当我使用浏览器访问时

例如:http://example.com/api/user_name=uname&password=pwd

它返回json值,并在使用python访问相同的api时响应

但问题是当我使用php从外部api访问它时它没有响应或返回json数据。

这是我的wgsi代码

    from bottle import Bottle,get,post,run,request,error,route,template,validate,debug,response
    import json
    import os
    import sys
    import bottle
    @route ('/user_name=:user_name&password=:password', method='GET')
    @route ('/user_name=:user_name&password=:password', method='POST')
    def login_validate(user_name,password):
        import xmlrpclib
        print "test"
        dbname = 'more'
        sock_common = xmlrpclib.ServerProxy ('http://localhost:8069/xmlrpc/common')
        uid = sock_common.login(dbname, user_name, password)
        if uid:
            sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')
            adv_fields = ['name']
            adv_args=[('user_id','=',uid)]
            adv_id = sock.execute(dbname, uid, password, 'res.partner', 'search', adv_args) 
            if adv_id:
                res = sock.execute(dbname, uid, password, 'res.partner', 'read',adv_id, adv_fields) [0]
                print res,type(res)
                return json.dumps({'Sucesss':res['name']})
            else:
                return json.dumps({'Error':'User Found but not a partner'})
        else:
            return json.dumps({'Failure':'Invalid User Name or Password'})
    application = bottle.default_app()

1 个答案:

答案 0 :(得分:1)

第一选择:禁用Apache gzip压缩

请参阅Include mods-enabled/*.loadInclude mods-enabled/*.conf,查看mods-enabled文件夹内部是否有对mod_deflate(Apache的gzip comrpession)的任何引用。

如果你使用的是类似Debian的系统,你可以用它来禁用它:

a2dismod deflate
service apache2 restart

如果您使用的是RedHat / Centos,请检查/etc/httpd/conf/httpd.conf并修改LoadModule行。

第二选择:阅读gzip回复

Uncompress gzip compressed http response