Hướng dẫn python decode http request - python giải mã yêu cầu http

Tôi đang viết một máy chủ web không đồng bộ thử nghiệm. Tôi đang tự hỏi về cách tiêu chuẩn / 'tốt nhất' để giải mã các yêu cầu HTTP trong Python?

Về cơ bản, những gì đọc từ ổ cắm mang lại cho tôi là biểu diễn byte của dữ liệu thô yêu cầu đến; Làm thế nào tôi có thể biến chúng thành các kiểu dữ liệu tiêu chuẩn như từ điển, danh sách các giá trị, v.v. Có một hướng dẫn tổng quát tốt làm thế nào để làm điều này và những gì để xem (đặc biệt là liên quan đến mã hóa và trình duyệt cụ thể của trình duyệt)?

Hướng dẫn python decode http request - python giải mã yêu cầu http

Hỏi ngày 18 tháng 8 năm 2010 lúc 12:41Aug 18, 2010 at 12:41

Điều này làm việc cho tôi:

import StringIO, httplib

ucode_data = unicode( your_raw_data ,"utf-8")
str = StringIO.StringIO( ucode_data )
http_header = httplib.HTTPMessage(str,0)
http_header.readheaders()

print http_header.__dict__

Nhưng nó không giải mã được yêu cầu (ví dụ: get /index.html http /1.2) - nó sẽ giải mã phần còn lại cho bạn mặc dù

Đã trả lời ngày 7 tháng 6 năm 2013 lúc 16:03Jun 7, 2013 at 16:03

StackMatestackMatestackmate

8789 Huy hiệu bạc16 Huy hiệu Đồng9 silver badges16 bronze badges

Nhìn thấy

20.10.4. Các đối tượng httpmessage

Một phiên bản http.client.httpmessage giữ các tiêu đề từ phản hồi HTTP. Nó được triển khai bằng cách sử dụng lớp Email.Message.Message.

http://docs.python.org/py3k/library/http.client.html#httpmessage-objects

Bạn sẽ có thể sử dụng

$ pip install pipenv
8 như một lớp độc lập mà không cần gọi Urllib (hoặc bất cứ điều gì tương đương Python 3).

Đã trả lời ngày 18 tháng 8 năm 2010 lúc 17:26Aug 18, 2010 at 17:26

Wai Yip Tungwai Yip TungWai Yip Tung

17.6K10 Huy hiệu vàng42 Huy hiệu bạc46 Huy hiệu đồng10 gold badges42 silver badges46 bronze badges

Đừng đối phó với ổ cắm; trừu tượng! Hãy thử httplib2. Đó là một thư viện HTTP hoàn chỉnh cho Python 2 và 3, và nó rất trực quan, mặc dù bạn phải tải xuống và cài đặt nó. Đọc ví dụ sử dụng của nó để giới thiệu nhanh.

Đi sâu vào Python 3 bao gồm một chương rất hay về việc cài đặt và sử dụng httplib2, và tại sao nó tốt hơn các lựa chọn thay thế khác, bao gồm thư viện tiêu chuẩn; Tôi khuyên bạn nên đọc điều đó.

Đã trả lời ngày 21 tháng 8 năm 2010 lúc 14:59Aug 21, 2010 at 14:59

Humphrey Bogarthumphrey BogartHumphrey Bogart

7.21313 Huy hiệu vàng51 Huy hiệu bạc59 Huy hiệu Đồng13 gold badges51 silver badges59 bronze badges

Thư viện Requests trong Python giúp lập trình viên có thể thực hiện các tác vụ như gửi request tới server cũng như xử lý response một cách đơn giản. Trong bài viết này chúng ta sẽ tìm hiểu cách sử dụng thư viện này.Requests trong Python giúp lập trình viên có thể thực hiện các tác vụ như gửi request tới server cũng như xử lý response một cách đơn giản. Trong bài viết này chúng ta sẽ tìm hiểu cách sử dụng thư viện này.

Hướng dẫn python decode http request - python giải mã yêu cầu http

Cách đơn giản nhất để cài đặt thư viện Request đó là sử dụng chương trình 

$ pip install pipenv
9.Request đó là sử dụng chương trình 
$ pip install pipenv
9.

Việc cài đặt 

$ pip install pipenv
9 có thể được thực hiện một cách đơn giản thông qua 
$ brew install pipenv
1:

$ pip install pipenv

Ngoài ra, nếu bạn sử dụng Mac OSX thì việc cài đặt 

$ pip install pipenv
9 khá đơn giản thông qua HomeBrew:

$ brew install pipenv

Sau khi đã có 

$ pip install pipenv
9 chúng ta sẽ thực hiện việc cài đặt thư viện Requests. Mở cửa sổ dòng lệnh và chạy câu lệnh sau:Requests. Mở cửa sổ dòng lệnh và chạy câu lệnh sau:

$ pipenv install requests

Sau khi hoàn tất việc cài đặt thì bây giờ chúng ta đã sẵn sàng để bắt đầu sử dụng thư viện này. Ở phần tiếp theo sau tôi sẽ chạy code Python trong interactive, tuy nhiên nếu muốn bạn có thể tạo file chương trình python riêng để chạy code. Để truy cập vào Python interactive mode bạn chạy câu lệnh 

$ brew install pipenv
4 trên cửa sổ dòng lệnh.

Gửi HTTP GET Request

Trước tiên chúng ta cần import thư viện Requests vào sử dụng trong chương trình:

>>> import requests

Để gửi một HTTP GET request tới địa chỉ URL là 

$ brew install pipenv
5:

>>> res = requests.get('https://www.codehubnv./bai-viet')

Sau khi chạy câu lệnh trên biến 

$ brew install pipenv
6 lúc này sẽ chứa thông tin response trả về từ server. Để xem dữ liệu của response trả về dưới định dạng văn bản chúng ta sử dụng câu lệnh:

>>> res.text

Chúng ta có thể thêm query parameter trong GET request trực tiếp trong URL:

>>> res = requests.get('https://www.codehub.vn/bai-viet?page=10')

Hoặc bạn cũng có thể sử dụng cách khác như sau:

>>> payload = {'page': '10'}
>>> res = requests.get('https://www.codehub.vn/bai-viet', params=payload)

Kiểm tra URL của request:

>>> print(res.url) // https://www.codehub.vn/bai-viet?page=10

Gửi HTTP POST Request

Ở ví dụ dưới đây chúng ta sẽ gửi HTTP POST request tới địa chỉ URL là 

$ brew install pipenv
7 với hai trường dữ liệu là 
$ brew install pipenv
8 và 
$ brew install pipenv
9:

$ pip install pipenv
0

Request được thực hiện bởi Python ở đoạn code trên sẽ tương tự trường hợp khi bạn truy cập trang login điền các dữ liệu cho 2 trường 

$ brew install pipenv
8 và 
$ pipenv install requests
1 vào HTML form và nhấp Enter để trình duyệt gửi request tới server.

Để gửi POST request với giá trị của trường 

$ pipenv install requests
2 trong HTTP header là 
$ pipenv install requests
3 thì chúng ta cần sử dụng parameter là 
$ pipenv install requests
4 thay vì 
$ pipenv install requests
5:

$ pip install pipenv
1

Nếu cả 2 parameter 

$ pipenv install requests
5 và 
$ pipenv install requests
4 đều được sử dụng khi gửi POST request thì parameter 
$ pipenv install requests
5 sẽ được chọn:

$ pip install pipenv
2

Để upload một file lên server sử dụng POST request chúng ta sẽ cần chuyền vào giá trị cho tham số 

$ pipenv install requests
9. Giá trị này là một dictionary với tên trường dùng để xác định file được tải lên và giá trị là file object tương ứng:

$ pip install pipenv
3

Gửi HTTP PUT, DELETE, HEAD Và OPTION Request

Các request dạng này tương tự như GET request mà chúng ta đã tham khảo ở mục trước:

$ pip install pipenv
4

Response Content

Để lấy ra nội dung của response trả về dạng văn bản:

$ pip install pipenv
5

Trường hợp văn bản trả về trong response có định dạng JSON thì lúc này chúng ta có thể decode dữ liệu này như sau:

$ pip install pipenv
6

Response Status Codes

Để kiểm tra HTTP status code của response trả về cho request:

$ pip install pipenv
7