http https get post

xiaoxiao2021-02-28  116

https用起来和http差不多,底层的已经被写好,不需要我们去处理。

https服务端(使用最简单的tornado说明)

import tornado.httpserver import tornado.ioloop import tornado.web class getToken(tornado.web.RequestHandler): def get(self): self.write("hello") application = tornado.web.Application([ (r'/', getToken), ]) if __name__ == '__main__': http_server = tornado.httpserver.HTTPServer(application, ssl_options={ "certfile": "server.crt", "keyfile": "server.key", }) #https服务器 #http_server = tornado.httpserver.HTTPServer(application) #http服务器用这个 http_server.listen(443) tornado.ioloop.IOLoop.instance().start()

可以看到,https在配置上就多了一个ssl_options,这里配置的是ssl证书,由于我是内部机器通信用的,就自己生成了。具体方法如下 http://www.2cto.com/article/201510/444706.html

https客户端

https分为单向和双向,这里我用的是单向,各种请求和http完全一致,把http改为https即可

对于https://localhost:443/test?data1={"key1":"dsf"}&data2=test2

get

def getHtml(): requrl = """http://localhost:443/test?data1={"key1":"dsf"}&data2=test2""" resp = urllib2.urlopen(requrl) rst = resp.read() resp.close() print rst return rst getHtml()

post

url = "http://localhost:443/test" data1 = {"key1":"dsf"} data2 = "test2" def postHttp(): #定义要提交的数据 params = {"data1": json.dumps(data1), "data2": data2} #url编码 postdata=urllib.urlencode(params) #enable cookie request = urllib2.Request(url, postdata) response=urllib2.urlopen(request) rst = response.read() print rst postHttp()

服务端代码 #coding:utf8 import tornado.httpserver import tornado.ioloop import tornado.web import json class getToken(tornado.web.RequestHandler): def get(self): self.write("hello") class testHandler(tornado.web.RequestHandler): def get(self): data1 = self.get_argument("data1") # 如果没有给默认值 ,会自动返回400错误 print 1111111,data1 if not data1: self.set_status(400) return data2 = self.get_argument("data2") # 如果没有给默认值 ,会自动返回400错误 print 2222222,data2 if not data2: self.set_status(400) return j_params = json.loads(data1) print j_params self.write("welcome to %s"%"get") def post(self): data1 = self.get_argument("data1") # 如果没有给默认值 ,会自动返回400错误 print 1111111, data1 if not data1: self.set_status(400) return data2 = self.get_argument("data2") # 如果没有给默认值 ,会自动返回400错误 print 2222222, data2 if not data2: self.set_status(400) return j_params = json.loads(data1) print j_params self.write("welcome to %s"%"post") if __name__ == '__main__': app = tornado.web.Application([ (r'/', getToken), (r'/test', testHandler), ]) http_server = tornado.httpserver.HTTPServer(app) #http服务器用这个 http_server.listen(443) tornado.ioloop.IOLoop.instance().start()

转载请注明原文地址: https://www.6miu.com/read-20369.html

最新回复(0)