포스트 요청의 4가지 방법
19118 단어 편물
Post 요청의 네 가지 전송 방법의 Python 구현
HTTP 프로토콜은 POST에 의해 제출된 데이터가 메시지 본문(entity-body)에 있어야 한다고 규정하지만 프로토콜은 데이터가 사용해야 하는 인코딩을 규정하지 않습니다. 네 가지 일반적인 인코딩 방법은 다음과 같습니다.
♦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입니다.
형태:
1 requests.post(url='',data={'key1':'value1','key2':'value2'},headers={'Content-Type':'application/x-www-form-urlencoded'})
♦Reqeusts는 양식 형태의 게시 요청 전송을 지원하므로 요청 매개변수를 사전에 구성한 다음 요청의 매개변수 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'}
가 form의 형태로 서버에 제출되고 form 필드가 반환됨을 알 수 있습니다. 서버에 의해 제출된 데이터입니다.(2) 요청 본문이 multipart/form-data입니다.
기존의 application/x-www-form-urlencoded 형식 외에도 우리가 자주 사용하는 또 다른 형식은 파일 업로드 형식입니다. 이 형식의 유형은 multipart/form-data입니다.
형태:
1 requests.post(url='',data={'key1':'value1','key2':'value2'},headers={'Content-Type':'multipart/form-data'})
♦发送文件中的数据需要(安装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格式文本
1 requests.post(url='',data='',headers={'Content-Type':'text/xml'})
♦传入json格式文本
1 requests.post(url='',data=json.dumps({'key1':'value1','key2':'value2'}),headers={'Content-Type':'application/json'})
또는: 1 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) 요청 본문이 바이너리입니다.형태:
1 requests.post(url='',files={'file':open('test.xls','rb')},headers={'Content-Type':'binary'})
♦Requests는 멀티파트 형식으로 게시 요청 보내기도 지원합니다. 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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
어떻게 텍스트 파일 편집 기 를 만 듭 니까?newdoc.asp<%@ Language=VBScript %> 눈 분출 을 흔 드 는 텍스트 파일 편집기 <%dim x if Request("type")="save"thenx=1end if%>>< <% if not ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.