python基于http的网络通信和网站端口暴露;Python网络编程之HTTP协议的python应用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、HTTP协议概述

HTTPHypertext Transfer Protocol即超文本传输协议是Web应用程序使用的协议在Web浏览器和Web服务器之间传递HTML页面和数据。HTTP是基于TCP/IP协议来传输数据的是一种无状态的协议。

关键特点

支持客户/服务器模式Web浏览器作为HTTP客户端通过URL向HTTP服务器发送HTTP请求然后HTTP服务器会把HTTP响应返回给客户端
简单快速客户端向服务器请求时只需要传递简单的HTTP请求服务器响应时也只需要返回简单的HTTP响应就可以了。而HTTP协议通信速度快适用于分布式环境下的基于Hypermedia的系统
灵活HTTP协议可以通过发送不同的请求方法、请求头等让服务器端做不同的处理
无连接客户端发送请求后服务器端响应完该请求后就会断开连接。HTTP服务器端需要很短的时间维护每个连接而且它并不对客户端发送请求的数量有所限制。这样就可以更快地响应用户的请求。

二、Python实现HTTP请求

  1. requests库
    requests库是Python实现HTTP请求的一个第三方库它提供了一个更加简单的HTTP请求接口简单易学非常适合做Web测试和爬虫开发。

安装方法

pip install requests

使用方法

import requests

url = "http://www.baidu.com"
response = requests.get(url)
print(response.content.decode())

详细解释

使用requests.get()函数发起GET请求并将响应对象存储到response变量中
调用响应对象的content属性获取响应内容的字节流数据并使用decode()函数将其解码成字符串类型
输出获取到的响应内容

  1. urllib库
    urllib库是Python自带的HTTP请求库也是Python实现HTTP请求的一种基础方式比较适合初学者学习使用。

使用方法

import urllib.request

url = "http://www.baidu.com"
response = urllib.request.urlopen(url)
print(response.read().decode())

详细解释

使用urllib.request.urlopen()函数发起GET请求并将响应对象存储到response变量中
调用响应对象的read()函数获取响应内容的字节流数据并使用decode()函数将其解码成字符串类型
输出获取到的响应内容。

三、Python实现HTTP服务器

在Python中实现HTTP服务器可以使用内置的http.server模块它提供了HTTP协议的处理和解析。

  1. 简单示例
    下面是一个简单的例子实现一个简单的HTTP服务器可以根据请求的不同返回不同的响应内容
from http.server import SimpleHTTPRequestHandler, HTTPServer

class MyHTTPRequestHandler(SimpleHTTPRequestHandler):

    def do_GET(self):
        if self.path == '/':
            self.path = '/index.html'
        return SimpleHTTPRequestHandler.do_GET(self)

if __name__ == '__main__':
    server = HTTPServer(('', 8000), MyHTTPRequestHandler)
    print('Serving HTTP on localhost port 8000...')
    server.serve_forever()

详细解释

创建一个继承自SimpleHTTPRequestHandler类的子类并重写do_GET方法通过判断请求路径来返回不同的响应内容
在__main__函数中创建一个HTTPServer对象指定服务器地址、端口和处理器
调用HTTPServer对象的serve_forever方法启动HTTP服务器并指定服务状态一直保持运行。

  1. Flask框架示例
    下面是一个使用Flask框架实现HTTP服务器的示例
from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def home():
    return '<h1>Hello Flask!</h1>'

@app.route('/user/<name>')
def user(name):
    return f'<h1>Hello,{name}!</h1>'

详细解释

导入Flask框架创建一个Flask对象实例并通过__name__参数指定当前模块的名称
使用@app.route()装饰器来定义路由和视图函数通过return语句返回响应内容
调用Flask对象实例的run方法启动HTTP服务器。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“python基于http的网络通信和网站端口暴露;Python网络编程之HTTP协议的python应用” 的相关文章

VisionMobile:开发者优先平台选择iOS vs Android vs HTML5

文章来源:http://www.visionmobile.com/blog/2013/12/developers-prioritise-platforms-ios-vs-android-vs-html5/开发者如何看待各平台,应用类型和成功之道是如何影响他们选择平台?Andreas Pappas将根...

SpringMVC ViewResolver视图解析器组件怎么用 - 开发技术

本篇内容主要讲解“SpringMVC ViewResolver视图解析器组件怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringMVC ViewResolver视图解析器组件怎么用”吧!Sp...

Qt中拿到发送信号过来的对象

QCheckBox *checkBox = qobject_cast<QCheckBox*>(sender())...

UVa 160 Factors and Factorials (数论)

160 - Factors and FactorialsTime limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a...

UVa 694 The Collatz Sequence (数论)

694 - The Collatz SequenceTime limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=...

mysql使用order by排序查询导致sql变慢

前几天发现一个页面加载缓慢,大概得有个二三十秒的样子,一开始并没有当回事以为第一次打开加载缓慢,后来反复打开,每次都加载十分缓慢,于是我开始排查问题 页面上显示大概也就两万多条数据,而且还进行了分页,按理说不应该这么慢,于是我把执行的sql拿出来,单独执行了一下,这一试发现了问题严重性,单单这一个...