我正在尝试从使用Django构建的页面向App Engine服务器发送GET请求。我在Django部分设置参数,但在App Engine中参数值为空。
我在Django端记录了它的值,参数值没问题。
这是我的 Django 代码:
try:
username = request.session['username']
params = urllib.urlencode('user', username)
headers = {"Content-type":"application/x-www-form-urlencoded", "Accept":"text/plain"}
conn = httplib.HTTPConnection(connections_strings.auth)
conn.request("GET", connections_strings.auth, params, headers)
response = conn.getresponse()
jsonString = response.read()
return render_to_response('home/index.html', locals(), context_instance=RequestContext(request))
这是 App Engine 代码:
def get(self):
username = self.request.get('user') # Get the username parameter
query_user = UserEntity.all()
query_user.filter('username = ', username)
user_data = []
for user in query_user:
record = { //Create the JSON.. }
user_data.append(record)
self.response.headers['Content-Type'] = 'application/json'
self.response.out.write(simplejson.dumps(user_data))
正在调用App Engine中的get(self)
方法,我在那里放了一条日志消息并打印出来。
所以,正在发生的事情是,在App Engine方面,self.request.get('user')
什么都不返回。这很奇怪,我已经从移动端提出了GET
请求,并且它完全适用于同样的方法。
任何想法??
谢谢!
答案 0 :(得分:3)
在HTTP GET方法中,查询参数在URL中传递:
http://example.com?user=foo
request()
方法的定义如下:
HTTPConnection.request(method, url[, body[, headers]])
通过这样做:
conn.request("GET", connections_strings.auth, params, headers)
您已经在请求正文中发送了参数。
请改为尝试:
selector = '{}?{}'.format(connections_strings.auth, params)
conn.request("GET", selector, headers=headers)