>  기사  >  백엔드 개발  >  Python 요청을 사용하여 원시 HTTP 요청을 인쇄하는 방법은 무엇입니까?

Python 요청을 사용하여 원시 HTTP 요청을 인쇄하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-23 12:09:30570검색

How to Print Raw HTTP Requests Using Python Requests?

Python 요청으로 원시 HTTP 요청 인쇄

Python 요청 라이브러리는 HTTP 요청을 단순화하지만 원시 HTTP 요청을 이해하는 것은 디버깅에 유용할 수 있습니다. 그리고 분석. 이 문서에서는 요청 줄, 헤더 및 콘텐츠를 포함하여 전체 HTTP 요청에 액세스하고 인쇄하는 방법을 살펴봅니다.

이전에는 원시 요청을 추출하려면 헤더만 제공했던 요청 속성에 액세스해야 했습니다. 그러나 버전 1.2.3에서는 Requests에 서버로 전송될 정확한 바이트를 캡슐화하는 preparedRequest 객체가 도입되었습니다.

PreparedRequest를 활용하려면 요청 객체를 생성하고 prepare() 메서드를 사용하세요. 그런 다음 명확성을 위해 출력을 예쁘게 만들 수 있습니다.

<code class="python">import requests

# Create a request
req = requests.Request('POST', 'http://stackoverflow.com', headers={'X-Custom': 'Test'}, data='a=1&b=2')

# Prepare the request (encodes it to bytes)
prepared = req.prepare()

# Define a function to prettify the POST request
def pretty_print_POST(req):
    """Prints the request in a human-readable format."""
    print('{}\n{}\r\n{}\r\n\r\n{}'.format(
        '-----------START-----------',
        req.method + ' ' + req.url,
        '\r\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
        req.body,
    ))

# Prettify the prepared request
pretty_print_POST(prepared)

# Send the actual request using a Session object
s = requests.Session()
s.send(prepared)</code>

이 코드는 전체 HTTP 요청을 다음과 같이 인쇄합니다.

-----------START-----------
POST http://stackoverflow.com/
Content-Length: 7
X-Custom: Test

a=1&b=2

이 접근 방식을 사용하면 서버로 전송된 요청을 검사할 수 있어 작업이 용이해집니다. 요청-응답 수명주기를 디버깅하고 이해합니다.

위 내용은 Python 요청을 사용하여 원시 HTTP 요청을 인쇄하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.