http 协议中post请求数据格式

Posted qika

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http 协议中post请求数据格式相关的知识,希望对你有一定的参考价值。

这篇文章也有详细说过:https://www.cnblogs.com/QiKa/p/12863127.html

 

HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中

1、application/x-www-form-urlencoded 
#这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据
如:Content-Type: application/x-www-form-urlencoded ; charset=utf-8

2、multipart/form-data 
使用表单上传文件时,必须让 form 的 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

3、application/json 
application/json把它作为请求头,用来告诉服务端,消息主体是序列化后的 JSON 字符串

4、text/xml 
它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范


实例:------------------------------------------------------------
Python在调用外部http请求时,post请求进行传 请求体body
1、application/x-www-form-urlencoded
import urllib
url = "http://www.example.com"
body_value = {"package": "com.tencent.lian","version_code": "66" }
body_value = urllib.urlencode(body_value)
request = urllib2.Request(url, body_value)
request.add_header(keys, headers[keys])
result = urllib2.urlopen(request ).read()

2、multipart/form-data 
需要利用python的poster模块,安装poster:pip install poster 
代码:
from poster.encode import multipart_encode 
from poster.streaminghttp import register_openers 
url = "http://www.baidu.com"
body_value = {"package": "com.tencent.lian","version_code": "77" }
register_openers()
datagen, re_headers = multipart_encode(body_value)
request = urllib2.Request(url, datagen, re_headers)
# 如果有请求头数据,则添加请求头
request .add_header(keys, headers[keys])
result = urllib2.urlopen(request ).read()

3、application/json
import json
url = "http://www.baidu.com"
body_value = {"package": "com.tencent.lian","version_code": "77" }
register_openers()
body_value = json.JSONEncoder().encode(_value)

 

以上是关于http 协议中post请求数据格式的主要内容,如果未能解决你的问题,请参考以下文章

POST 请求的三种常见数据提交格式

网络编程 应用层协议 -HTTP

网络编程 应用层协议 -HTTP

django学习----http协议

HTTP——概述请求和响应GET和POST请求

HTTP Post请求的四种编码方式