用了些requests模块,主要是requests.request、requests.get和requests.post
import json
import requests
url='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.ioloop
import tornado.web
class 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})#可以用json
def 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 json
import requests
url='http://localhost:8888/'
response=requests.get(url)
response2=requests.request('get',url)
response3=requests.request('post',url)
#判断response和response2
print('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和response3
print('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 json
import requests
url='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())