首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Coding
V2EX  ›  Python

Requsts 库如何 POST 纯文本?Content-Type 为 text/plain

  •  
  •   zhuzhuaini · 27 天前 · 816 次点击
    抓包获得 POST 体当中的内容是这样的:
    aa=1
    bb=2
    c=1

    我在 python 中构建了这样的字典:data={'aa':'1','bb':'2','c':'1'} 执行后抓包,发现内容是
    aa=1&bb=2&c=1


    我想了一个解决方案但是没有实现
    1.让 data 字典在连接的时候将"&"符号转换成"\n",ps:查了一下没有找到相应的解决方案...
    2.在网上查到可以使用传送文件的形式,但是抓包后发现变成了:
    --5af9e62e59d2513ddaa25c9d9ae43bd9
    Content-Disposition: form-data; name="file"; filename="data.txt"
    aa=1
    bb=2
    c=1
    --5af9e62e59d2513ddaa25c9d9ae43bd9--
    中间是对了 但是头和尾多了许多无用的东西.

    特来问问 V2 们,谢谢!!!!
    3 回复  |  直到 2019-11-15 17:01:45 +08:00
        1
    islxyqwe   27 天前   ♥ 1
    requests.post(url,data="\n".join(f'{k}={v}' for k,v in data.items()))
        2
    zhuzhuaini   27 天前
    @islxyqwe 高手!佩服的五体投地!感谢!完美的解决了我的问题,我在网上查询,用了很多解决方案都是走了弯路...
    再次感谢!
        3
    ClericPy   27 天前
    data = '''aa=1
    bb=2
    c=1'''.encode('utf-8')

    不就行了


    https://github.com/psf/requests/blob/428f7a275914f60a8f1e76a7d69516d617433d30/requests/models.py#L506
    看下 Requests 的源码
    data 用 dict 格式是让 Requests 通过 _encode_params 函数自动转 application/x-www-form-urlencoded 类型参数来 post, 否则直接用 bytes 就好了, 你看看源码也会发现, 最后 data 总要转 bytes 类型的 body 的

    另, 这个请求可以直接导出 curl 么, 可以试试直接用 curlparse 的方式转 Requests 库的请求参数
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3592 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 107ms · UTC 05:19 · PVG 13:19 · LAX 21:19 · JFK 00:19
    ♥ Do have faith in what you're doing.