python - 仅使用标准库将 curl POST 请求转换为 Python

标签 python json curl

我想将此 curl 命令转换为可以在 Python 中用于现有脚本的命令。

curl -u 7898678:X -H 'Content-Type: application/json' \
-d '{"message":{"body":"TEXT"}}' http://sample.com/36576/speak.json

TEXT 是我想用脚本其余部分生成的消息替换的内容。(这已经是合理的,尽管我认为它不遵循最佳实践或特殊性可靠。-需要找出如何正确学习编程(即不使用谷歌组装东西))

如果可能的话,我希望它与标准库一起使用。

最佳答案

I would like this to work with the standard library if possible.

标准库提供urllib httplib 用于处理 URL:

>>> import httplib, urllib
>>> params = urllib.urlencode({'apple': 1, 'banana': 2, 'coconut': 'yummy'})
>>> headers = {"Content-type": "application/x-www-form-urlencoded",
...            "Accept": "text/plain"}
>>> conn = httplib.HTTPConnection("example.com:80")
>>> conn.request("POST", "/some/path/to/site", params, headers)
>>> response = conn.getresponse()
>>> print response.status, response.reason
200 OK

如果你想自己执行 curl,你可以调用 os.system():

import os
TEXT = ...
cmd = """curl -u 7898678:X -H 'Content-Type: application/json'""" \
  """-d '{"message":{"body":"%{t}"}}' http://sample.com/36576/speak.json""" % \
  {'t': TEXT}

如果您愿意放宽仅限标准库的限制,可以使用 PycURL .请注意,它不是 Python 风格的(它几乎只是 libcurl 的薄薄的一层),我不确定它与 Python 3 的兼容性如何。

关于python - 仅使用标准库将 curl POST 请求转换为 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1990976/

相关文章:

python - 在 PyCharm 中类型提示 dict.items() 时的奇怪行为

python - Jinja 模板中的惰性变量查找

javascript - 将数据传递给堆积柱形图(Highcharts 框架)

javascript - 在回调函数之外访问node.js中readline和fs解析的数据

javascript - 如何从函数中调用/返回ajax成功对象

python - MySQL从Python插入/更新,来自Excel电子表格的数据

python - 乒乓球模拟器

ios - NSURLCredential 认证只有一把 key

php - curl 获取远程文件并同时强制下载

C libcurl 小于预期的响应大小