我遇到了一个奇怪的情况,即具有较轻内容的请求最终比具有较大内容的请求消耗更多的字节。你知道吗
这是我的密码:
import requests
import base64
def do_work(image_raw, image_name):
url = 'http://httpbin.org/post'
data = {'pic':image_raw}
res = requests.post(url, data=data, json={'name':image_name})
print len(image_raw), len(res.content)
image_enc = base64.b64encode(image_raw)
res = requests.post(url=url, json={'pic':image_enc, 'name':image_name})
print len(image_enc), len(res.content)
典型的结果是:
68166 925208
90888 182301
编码后的图像比原始图像重33%,这很有道理。 但是为什么第一个请求更重要呢? 我格式化请求的方式一定有问题。你知道吗
注意:我使用的是python3,而我的
image_raw
是一个byte
对象,因此结果会有所不同(可能是由于byte
、unicode
和str
之间的差异),但是解释应该是适用的。你知道吗它有助于打印出一部分实际的
res.content
。在第一种情况下:在第二种情况下:
如您所见,
res.content
,http://httpbin.org/post返回的字符串实际上是POST数据的可读表示。在第一种情况下,POST数据包含许多非ASCII字符,这些字符采用比base64\uxxxx
转义序列更低效的编码方式进行编码。这就是为什么在第一种情况下res.content
的长度更长。你知道吗相关问题 更多 >
编程相关推荐