本文共 3923 字,大约阅读时间需要 13 分钟。
用了些requests模块,主要是requests.request、requests.get和requests.post
import jsonimport requestsurl='http://localhost:8888/'response=requests.get(url)#打印响应内容print('response.text:',response.text)print('response.content.decode():',response.content.decode())print('response.content:',response.content)print('response.json():',response.json())print('----------------------------------')#打印相应内容类类型print('response.text:',type(response.text))print('response.content.decode():',type(response.content.decode()))print('response.content:',type(response.content))print('response.json():',type(response.json()))print('----------------------------------')#判断相应内容是否相等print(response.text==response.content.decode())print(response.json()==response.content.decode())print(json.loads(response.content.decode())==response.json())
运行结果:
response.text: {"name": 1, "age": 18}
response.content.decode(): {"name": 1, "age": 18} response.content: b'{"name": 1, "age": 18}' response.json(): {'name': 1, 'age': 18} ---------------------------------- response.text: <class 'str'> response.content.decode(): <class 'str'> response.content: <class 'bytes'> response.json(): <class 'dict'> ---------------------------------- True False True------------------------------------------------------------------------------------------------------------------
关于json方法:
服务端返回内容有限制,不然response.json()方法会报错
客户端代码:
import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler): # 定义tornado的get方法 def get(self): # self.write('{"name":1,"age":18}')#可以用json # self.write({"name":1,"age":18})#可以用json self.write({'name':1,'age':18})#可以用json # self.write("{'name':1,'age':18}")#json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1) # self.write("{'name':1,'age':18}")#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) # self.write("test")#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) # self.write('test')#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) # self.write([1,2,3])#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) # self.write(123)#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) #定义tornado的post方法 def post(self, *args, **kwargs): self.write({'name':1,'age':18})#可以用jsondef make_app(): return tornado.web.Application([ (r"/", MainHandler), ])if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start()
对比requests.request方法和requests.get、requests.post方法的区别,感觉requests.request就是两这个汇总,手动传方法就行了
import jsonimport requestsurl='http://localhost:8888/'response=requests.get(url)response2=requests.request('get',url)response3=requests.request('post',url)#判断response和response2print('response.text:',response.text==response2.text)print('response.content.decode():',response.content.decode()==response2.content.decode())print('response.content:',response.content==response2.content)print('response.json():',response.json()==response2.json())#判断response和response3print('response.text:',response.text==response3.text)print('response.content.decode():',response.content.decode()==response3.content.decode())print('response.content:',response.content==response3.content)print('response.json():',response.json()==response3.json())
运行结果:
response.text: True
response.content.decode(): True response.content: True response.json(): True response.text: True response.content.decode(): True response.content: True response.json(): True这个结果是返回结果完全一样的,但是有api接口返回竟然是随机的。。。
比如天气api的这个接口
代码如下:
import jsonimport requestsurl='http://v.juhe.cn/weather/index'data={'cityname':'北京','key':'4ddab89a84997b92d16be8451a877a71'}response=requests.get(url,params=data)response1 = requests.request('GET', url, params=data)print(response.json() == response1.json())
转载地址:http://gbxws.baihongyu.com/