昨天一个python方法中用了urllib模块,后来用requests模块重新实现了功能,但出现值为None的键无法添加到url中的情况。
#urllib模块
def process(self,q):
url = "http://127.0.0.1/service/music?"
url = "%s%s" %(url, urllib.urlencode({<strong>"text": q.get('text'</strong>)}))
return json.loads(urllib.urlopen(url).read())
#requests模块
def process(self,q):
url = "http://127.0.0.1/service/music?"
payload = {<strong>"text":q.get('text')</strong>}
r = requests.get(url,params=payload)
result = r.json()
return result
后来,在requests的文档中找到了原因:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html#url
在requests中,字典值为None的键不会被添加到查询字符串中。而直接拼接生成url的urllib模块则不会出现这样的问题。
我想,这样可能会造成一些问题。例如:某些值为None的参数其实是可以返回结果的。比如
http://127.0.0.1/service/music?text=None
其实是可以查询到结果的。
如何解决这个问题还需要想想