优草派  >   Python

python自带的http模块详解

吴雅婷            来源:优草派

Python自带的http模块是Python的标准库之一,常用于HTTP客户端和服务器端编程。它提供了许多功能和接口,可以让我们轻松地进行HTTP请求和响应的处理。本文从多个角度详细介绍了Python自带的http模块。

python自带的http模块详解

一、HTTP请求

我们可以通过使用Python自带的http.client模块来发起HTTP请求。http.client模块提供了HTTPConnection类,我们可以实例化该类,然后调用request()方法来发起HTTP请求。

实例代码:

```python

import http.client

conn = http.client.HTTPSConnection("www.python.org")

conn.request("GET", "/index.html")

response = conn.getresponse()

print(response.status, response.reason)

conn.close()

````

首先需要使用HTTPConnection类来创建HTTP连接,参数中指定了URL主机名和端口号。接下来调用request()方法来发起HTTP请求,参数包括请求方法(如GET或POST)和请求路径(如/index.html)。最后调用getresponse()方法来获取响应对象。响应对象包含了HTTP响应的状态码和原因短语、消息体等信息。

二、HTTP响应

我们可以通过使用Python自带的http.client模块来处理HTTP响应。response对象提供了多个方法来获取HTTP响应数据,如status用于获取HTTP状态码,headers用于获取HTTP响应头部信息,read用于获取HTTP响应内容。

实例代码:

```python

import http.client

conn = http.client.HTTPSConnection("www.python.org")

conn.request("GET", "/index.html")

response = conn.getresponse()

print(response.status, response.reason)

data = response.read()

print(data.decode())

conn.close()

````

三、HTTPServer

Python自带的http.server模块提供了一个简单的HTTP服务器实现。我们可以使用http.server模块提供的SimpleHTTPRequestHandler类,继承该类并重写do_GET()方法,然后创建HTTPServer对象并指定服务器地址和端口号,最后调用HTTPServer对象的serve_forever()方法来启动HTTP服务器。

实例代码:

```python

from http.server import HTTPServer, BaseHTTPRequestHandler

class MyHandler(BaseHTTPRequestHandler):

def do_GET(self):

self.send_response(200)

self.send_header('Content-type','text/html')

self.end_headers()

self.wfile.write(b"Hello World !")

return

httpd = HTTPServer(('localhost', 8000), MyHandler)

print("Serving on port 8000...")

httpd.serve_forever()

````

我们首先定义了一个继承BaseHTTPRequestHandler类的MyHandler类,然后重写了do_GET()方法。在do_GET()方法中,我们需要先调用send_response()方法来发送HTTP响应的状态码,然后使用send_header()方法发送HTTP响应头部信息,最后使用wfile.write()方法来发送HTTP响应内容。

四、Handle与handle_one_request方法

handle方法可以处理一个HTTP请求,handle_one_request方法可以处理一个HTTP请求并关闭连接。在http.server模块中,BaseHTTPRequestHandler类中提供了handle()和handle_one_request()方法。

实例代码:

```python

from http.server import HTTPServer, BaseHTTPRequestHandler

class MyHandler(BaseHTTPRequestHandler):

def do_GET(self):

self.send_response(200)

self.send_header('Content-type','text/html')

self.end_headers()

self.wfile.write(b"Hello World !")

return

def run(server_class=HTTPServer, handler_class=MyHandler):

server_address = ('', 8000)

httpd = server_class(server_address, handler_class)

httpd.handle_request()

run()

````

我们定义了一个run()函数来启动HTTP服务器,并调用HTTPServer类的handle_request()方法来处理HTTP请求并关闭连接。

综上所述,Python自带的http模块常常用于HTTP客户端和服务器端编程。无论是发起HTTP请求还是处理HTTP响应,Python自带的http模块都能够轻松地完成。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行