일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 버전관리
- 컴퓨터비전
- 데이터분석
- 컴퓨터과학
- 프로그래밍
- 보안
- 인공지능
- 자료구조
- 클라우드컴퓨팅
- 소프트웨어
- 머신러닝
- 네트워크보안
- 알고리즘
- 빅데이터
- 프로그래밍언어
- 웹개발
- 딥러닝
- I'm Sorry
- 코딩
- 소프트웨어공학
- 사이버보안
- 데이터구조
- 2
- 컴퓨터공학
- 파이썬
- 데이터과학
- 네트워크
- 데이터베이스
- 자바스크립트
- Yes
- Today
- Total
스택큐힙리스트
내 Python 애플리케이션이 보내는 전체 HTTP 요청을 어떻게 볼 수 있나요? 본문
제 경우에는 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 요청에 대한 디버깅 및 문제 해결을 용이하게 할 수 있습니다.