【发布时间】:2015-10-21 12:22:07
【问题描述】:
我有以下安排。
Server3 有一个 Codeigniter 应用程序在 server3 上运行。S3 使用类似这样的一些标头调用 s2
$parse_auth = $this->parse->login($result->email, $this->input->post('password'));
现在,在 S2 上,我有一个 python 脚本,它调用一个外部 Parse API,它返回 JSON 响应; 完整代码如下:
import SimpleHTTPServer
import SocketServer
import logging
import cgi
import urllib2
import json
PORT = 9500
headers = None
BASE_URL = 'https://api.parse.com'
class ServerHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
args = self.path
parse_url = BASE_URL+args
opener = urllib2.build_opener()
opener.addheaders = [('Accept', self.headers.getheader('Accept')),('X-Parse-Application-Id', self.headers.getheader('X-Parse-Application-Id')),('X-Parse-Client-Version', self.headers.getheader('X-Parse-Client-Version')),('X-Parse-REST-API-Key', self.headers.getheader('X-Parse-REST-API-Key'))]
response = opener.open(parse_url)
print response.read()
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps(response.read()))// I tried without json.dumps, didn't work
def do_POST(self):
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST',
'CONTENT_TYPE':self.headers['Content-Type'],
})
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
Handler = ServerHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
当我在 s2 上打印来自 S1 的响应时,它显示为 JSON。
但是在 S3 上,当我打印数组 $parse_auth 我得到了
-1
Bad Request
我希望 S3 接收正确的 JSON 响应。怎么做。
提前致谢。
【问题讨论】:
-
我在do_GET的第一行错误地调用了SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self),导致响应错误。
标签: php python json codeigniter