V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
zhuzhuaini
V2EX  ›  Python

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

  •  
  •   zhuzhuaini · 2019-11-15 14:37:57 +08:00 · 3180 次点击
    这是一个创建于 1827 天前的主题,其中的信息可能已经有所发展或是发生改变。
    抓包获得 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
    islxyqwe
        1
    islxyqwe  
       2019-11-15 14:44:32 +08:00   ❤️ 1
    requests.post(url,data="\n".join(f'{k}={v}' for k,v in data.items()))
    zhuzhuaini
        2
    zhuzhuaini  
    OP
       2019-11-15 14:55:02 +08:00
    @islxyqwe 高手!佩服的五体投地!感谢!完美的解决了我的问题,我在网上查询,用了很多解决方案都是走了弯路...
    再次感谢!
    ClericPy
        3
    ClericPy  
       2019-11-15 17:01:45 +08:00
    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 库的请求参数
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4627 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:50 · PVG 17:50 · LAX 01:50 · JFK 04:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.