스택큐힙리스트

내 Python 애플리케이션이 보내는 전체 HTTP 요청을 어떻게 볼 수 있나요? 본문

카테고리 없음

내 Python 애플리케이션이 보내는 전체 HTTP 요청을 어떻게 볼 수 있나요?

스택큐힙리스트 2023. 4. 18. 09:17
반응형

제 경우에는 HTTPS를 통해 PayPal의 API를 호출하기 위해 requests 라이브러리를 사용하고 있습니다. 그러나 불행하게도 PayPal에서 오류가 발생하고 있으며, PayPal 지원팀에서는 그 오류가 무엇인지 또는 그것을 일으키는 요인이 무엇인지 알아낼 수 없습니다. 그들은 나에게 헤더를 포함한 전체 요청을 제공해주세요 라고 요청합니다.

그것을 어떻게 할 수 있을까요?

답변 1

간단한 방법 : 최신 버전의 Requests(1.x 이상)에서 로깅 기능을 활성화합니다.

요청은 http.client 및 logging 모듈 구성을 사용하여 로깅 상세도를 제어하며, here에서 설명한 대로 작동합니다.

시위

링크된 문서에서 코드 발췌:

import requests

import logging

# These two lines enable debugging at httplib level (requests->urllib3->http.client)

# You will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.

# The only thing missing will be the response.body which is not logged.

try:

import http.client as http_client

except ImportError:

# Python 2

import httplib as http_client

http_client.HTTPConnection.debuglevel = 1

# You must initialize logging, otherwise you'll not see debug output.

logging.basicConfig()

logging.getLogger().setLevel(logging.DEBUG)

requests_log = logging.getLogger(requests.packages.urllib3)

requests_log.setLevel(logging.DEBUG)

requests_log.propagate = True

requests.get('https://httpbin.org/headers')

예시 출력

$ python requests-logging.py

INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): httpbin.org

send: 'GET /headers HTTP/1.1\r\nHost: httpbin.org\r\nAccept-Encoding: gzip, deflate, compress\r\nAccept: */*\r\nUser-Agent: python-requests/1.2.0 CPython/2.7.3 Linux/3.2.0-48-generic\r\n\r\n'

reply: 'HTTP/1.1 200 OK\r\n'

header: Content-Type: application/json

header: Date: Sat, 29 Jun 2013 11:19:34 GMT

header: Server: gunicorn/0.17.4

header: Content-Length: 226

header: Connection: keep-alive

DEBUG:requests.packages.urllib3.connectionpool:GET /headers HTTP/1.1 200 226

답변 2

파이썬으로 작성된 애플리케이션에서 전송되는 전체 HTTP 요청을 어떻게 볼 수 있을까요? 이 질문에 대한 답은 매우 간단합니다. 파이썬에서 HTTP 요청을 보내는 방법은 다양하지만, 가장 일반적인 방법은 `requests` 패키지를 사용하는 것입니다. 이 패키지를 사용하면 HTTP 요청 및 응답의 일부를 볼 수 있습니다.

HTTP 요청 내용을 보는 방법은 다양합니다. 가장 일반적인 방법은 요청 메서드, URL, 헤더 및 본문을 보는 것입니다. 요청 메서드는 `GET`, `POST`, `PUT`, `DELETE` 등이 될 수 있습니다. URL은 웹 페이지의 URL 또는 REST API 엔드포인트가 될 수 있습니다. 헤더는 요청에 대한 추가 정보를 제공하며, 본문은 요청에 포함되는 데이터입니다.

`requests` 패키지에서는 `request` 객체를 사용하여 요청을 보내고 응답을 받습니다. 이 객체는 요청과 응답에 대한 정보를 포함합니다. 예를 들어, 다음과 같은 코드를 사용하여 URL에 GET 요청을 보낼 수 있습니다.

```

import requests

url = 'https://www.google.com'

response = requests.get(url)

print(response.request.headers)

print(response.request.body)

```

이 코드는 Google 홈페이지에 GET 요청을 전송하고, 요청 헤더 및 본문을 콘솔에 출력합니다. 실행 결과는 다음과 같습니다.

```

{'User-Agent': 'python-requests/2.25.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}

None

```

이 코드에서 `response` 객체는 요청 및 응답에 대한 정보를 포함합니다. `response.request` 속성은 실제로 전송된 요청에 대한 정보를 제공합니다. 위의 예제에서 `response.request.headers` 및 `response.request.body`는 각각 요청 헤더와 본문을 나타냅니다.

따라서, `requests` 패키지를 사용하여 파이썬 애플리케이션에서 전송되는 전체 HTTP 요청을 볼 수 있습니다. `request` 객체의 속성을 사용하여 요청 메서드, URL, 헤더 및 본문을 볼 수 있습니다. 이를 통해 HTTP 요청에 대한 디버깅 및 문제 해결을 용이하게 할 수 있습니다.

반응형
Comments