2010-12-04 2 views
1

Ich möchte nur ein JSON-Objekt zurückgeben, aber HTTP-Informationen werden darunter gedruckt. Ich verwende Google App Engine und https://github.com/simplegeo/python-oauth2Google App Engine HTTP-Informationen werden irgendwie gedruckt

#!/usr/bin/env python 

from google.appengine.ext import webapp 
from google.appengine.ext.webapp import util 
from django.utils import simplejson as json 
import oauth2 as oauth 
import cgi 

class MainHandler(webapp.RequestHandler): 

    def get(self): 

    consumer = oauth.Consumer(key="xxx", 
     secret="xxx") 

    request_token_url = "xxx" 

    client = oauth.Client(consumer) 

    resp, content = client.request(request_token_url, "POST") 

    if resp['status'] != '200': 
     raise Exception("Invalid response %s." % resp['status']) 

    request_token = dict(cgi.parse_qsl(content)) 
    print 
    print json.dumps({"oauth_token": request_token['oauth_token'], "oauth_token_secret": request_token['oauth_token_secret']}) 

def main(): 
    application = webapp.WSGIApplication([('/', MainHandler)], 
             debug=True) 
    util.run_wsgi_app(application) 


if __name__ == '__main__': 
    main() 

Antwort

2

Fügen Sie den richtigen Content-Type und wechseln Sie in self.response.out.write

self.response.headers['Content-Type'] = 'application/json' 
self.response.out.write(data) 
1

Statt print Verwendung self.response:

self.response.out.write("Some Text") 

Ich nehme an, dass die Request druckt automatisch eine Standard-HTTP-Header und sendet sie, wenn nichts auf die Antwort geschrieben .out-Stream.

Wenn Sie nur JSON-Daten senden möchten, können Sie die Header-Informationen "Content-Type" auf "application/json" setzen.