python3 요청 모듈 게시 요청 네 가지 방법
1. application/x-www-form-urlencoded
이것은 POST를 통해 데이터를 제출하는 가장 일반적인 방법이어야 합니다. enctype 속성이 설정되지 않은 경우 브라우저의 기본 형식은 결국 application/x-www-form-urlencoded에 데이터를 제출합니다. 요청은 다음과 같습니다(관련 없는 요청 헤더는 이 문서에서 생략됨).
POST http://www.example.com HTTP/1.1 Content-Type:
application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
2. 멀티파트/폼 데이터전통적인 application/x-www-form-urlencoded 형식 외에도 우리가 자주 사용하는 또 다른 형식은 multipart/form-data 유형의 파일 업로드 형식입니다. 이것은 POST 데이터 제출의 또 다른 일반적인 방법입니다. 양식을 사용하여 파일을 업로드할 때 양식의 enctyped를 이 값과 동일하게 만들어야 합니다. 다음은 예입니다.
다음으로 게시물 요청의 본문을 보내는 네 가지 방법에 대해 이야기해 보겠습니다.
POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
3. application/json application/json의 Content-Type은 응답 헤더로 누구에게나 친숙합니다. 실제로 점점 더 많은 사람들이 메시지 본문이 직렬화된 JSON 문자열임을 서버에 알리기 위해 요청 헤더로 이를 사용하고 있습니다. JSON 사양의 인기로 인해 Low-level IE를 제외한 모든 주요 브라우저는 기본적으로 JSON.stringify를 지원하며, 서버측 언어에도 JSON을 처리하는 기능이 있으므로 JSON을 사용해도 문제는 없다.4. text/xml HTTP를 전송 프로토콜로 사용하고 XML을 인코딩 방식으로 사용하는 원격 호출 사양입니다.
게시물 요청의 본문을 보내는 네 가지 방법이 있습니다.
(1) 요청 본문은 application/x-www-form-urlencoded입니다.
(2) 요청 본문이 multipart/form-data입니다.
(3) 요청 본문이 원시입니다.
(4) 요청 본문이 바이너리입니다.
(1) 요청 본문은 application/x-www-form-urlencoded입니다.
형태:
requests.post(url='',data={'key1':'value1','key2':'value2'},headers={'Content-Type':'application/x-www-form-urlencoded'})
Reqeusts는 양식의 형태로 게시 요청을 보내는 것을 지원합니다.요청의 매개변수를 사전에 구성한 다음 requests.post()의 data
파라미터에 전달하기만 하면 됩니다.입력하다:
url = 'http://httpbin.org/post'
d = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=d)
print(r.text)
산출:{
“args”: {},
“data”: “”,
“files”: {},
“form”: {
“key1”: “value1”,
“key2”: “value2”
},
“headers”: {
……
“Content-Type”: “application/x-www-form-urlencoded”,
……
},
“json”: null,
……
}
요청 헤더의 Content-Type 필드가 application/x-www-form-urlencoded로 설정되어 있고 d = {'key1': 'value1', 'key2': 'value2'}
가 양식의 형태로 서버에 제출된 것을 알 수 있습니다. 서버는 제출된 데이터입니다.(2) 요청 본문이 multipart/form-data입니다.
기존의 application/x-www-form-urlencoded 형식 외에도 우리가 자주 사용하는 또 다른 형식은 파일 업로드 형식입니다. 이 형식의 유형은 multipart/form-data입니다.
형태:
requests.post(url='',data={'key1':'value1','key2':'value2'},headers={'Content-Type':'multipart/form-data'})
파일로 데이터를 전송하는 데 필요(install requests_toolbelt)from requests_toolbelt import MultipartEncoder
import requests
m = MultipartEncoder(
fields={'field0': 'value', 'field1': 'value',
'field2': ('filename', open('file.py', 'rb'), 'text/plain')}
)
r = requests.post('http://httpbin.org/post', data=m,
headers={'Content-Type': m.content_type})
문서가 필요하지 않음from requests_toolbelt import MultipartEncoder
import requests
m = MultipartEncoder(fields={'field0': 'value', 'field1': 'value'})
r = requests.post('http://httpbin.org/post', data=m,
headers={'Content-Type': m.content_type})
(3) 요청 본문이 원시입니다.형태:
들어오는 xml 형식의 텍스트
requests.post(url='',data='',headers={'Content-Type':'text/xml'})
들어오는 json 형식의 텍스트requests.post(url='',data=json.dumps({'key1':'value1','key2':'value2'}),headers={'Content-Type':'application/json'})
또는: requests.post(url='',json={{'key1':'value1','key2':'value2'}},headers={'Content-Type':'application/json'})
json 문자열을 requests.post()의 데이터 매개변수에 전달할 수 있습니다.입력하다:
url = 'http://httpbin.org/post'
s = json.dumps({'key1': 'value1', 'key2': 'value2'})
r = requests.post(url, data=s)
print(r.text)
산출:{
“args”: {},
“data”: “{\”key2\”: \”value2\”, \”key1\”: \”value1\”}”,
“files”: {},
“form”: {},
“headers”: {
……
“Content-Type”: “application/json”,
……
},
“json”: {
“key1”: “value1”,
“key2”: “value2”
},
……
}
(4) 요청 본문이 바이너리입니다.형태:
requests.post(url='',files={'file':open('test.xls','rb')},headers={'Content-Type':'binary'})
요청은 또한 multipart 형식으로 게시 요청을 보내는 것을 지원합니다. requests.post()의 files
입력하다:url = 'http://httpbin.org/post'
files = {'file': open('report.txt', 'rb')}
r = requests.post(url, files=files)
print(r.text)
산출:{
“args”: {},
“data”: “”,
“files”: {
“file”: “Hello world!”
},
“form”: {},
“headers”: {……
“Content-Type”: “multipart/form-data; boundary=467e443f4c3d403c8559e2ebd009bf4a”,
……
},
“json”: null,
……
}
report.txt 텍스트 파일의 내용은 Hello world!라는 한 줄로 되어 있으며, 요청에 대한 응답 결과에서 서버에 데이터가 업로드되었음을 알 수 있습니다.참고: 헤더 유형에 주의하십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.