php - 使用外部 API 访问时,Python Bottle API 无 Json 响应

标签 php python api rest bottle

我使用 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()

最佳答案

第一个选择:禁用 Apache gzip 压缩

请参阅包含 mods-enabled/*.load包含 mods-enabled/*.conf,检查 mods-enabled 文件夹内以查看是否有任何对 mod_deflate(Apache 的 gzip 压缩)的引用。

如果您使用的是类似 Debian 的系统,您可以通过以下方式禁用它:

a2dismod deflate
service apache2 restart

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

第二个选择:读取 gzip 响应

Uncompress gzip compressed http response

关于php - 使用外部 API 访问时,Python Bottle API 无 Json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17403948/

相关文章:

php - 将 mysql_connect 转换为 cfquery

python - 如何使用 Telethon 在 Telegram 中搜索组和 channel ?

python - "test oracle"为非正式输出比较时的回归测试

android - 你能改变分钟吗? Eclipse 中您的 Android 应用程序的 API 级别?

php - 使用 PHP 将表单数据发送/发布到 URL

php - 允许用户上传个人资料照片

PHP 在 HTML 表格中显示关联数组

php - PHP 的 ZipArchive 的潜在安全问题

python - 如何正确处理访问 key 中包含 '/' 字符的 Celery 和 Azure 存储队列?

javascript - 可以将传单与 Mapbox GL JS 一起使用吗?