http https get post

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()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值