2013-07-01 2 views
1

Я создал api для openerp, используя бутылку, и отлично работает.API-интерфейс Python API No Json Response при доступе к внешнему API

Всякий раз, когда я получить доступ с помощью браузера

, например: http://example.com/api/user_name=uname&password=pwd

возвращает JSon значение, а также отвечает при доступе к такой же API с помощью питона

Но проблема в то время как я к нему доступ из внешнего API с помощью php не отвечает или возвращает данные 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() 
+0

Не могли бы вы опубликовать некоторую информацию отладки? Правильно ли отправлены параметры? некоторые 'print (имя_пользователя, пароль)' могут помочь. –

+0

при доступе к использованию типа содержимого php не возвращается как json, он возвращается как gzip – senthilnathang

+0

Как именно вы развертываете это приложение? Какой веб-сервер задействован? Кажется, что gzip происходит после wsgi, т. Е .: nginx, apache. –

ответ

1

первый выбор: Отключить Apache сжатия GZIP

См Include mods-enabled/*.load и Include mods-enabled/*.conf, проверьте в mods-enabled папку, чтобы увидеть, если есть какие-либо ссылки на mod_deflate (Апач GZIP comrpession).

Если вы на Debian, как системы, вы можете отключить его с этим:

a2dismod deflate 
service apache2 restart 

Если вы находитесь на RedHat/Centos затем проверить /etc/httpd/conf/httpd.conf и редактировать LoadModule линии.

второй выбор: Читать GZIP ответ

Uncompress gzip compressed http response

+0

На самом деле проблема заключается в том, что jp-разработчик PHP использует «JSON» вместо «JSONp». После того, как я проверил его код, я обнаружил, что проблема связана с его боковая проверка этого для деталей http://stackoverflow.com/questions/2887209/what-are-the-differences-between-json-and-jsonp – senthilnathang