使用 urllib2 进行 POST 调用而不是 GET

2024-02-03

关于 urllib2 和 POST 调用有很多东西,但我遇到了一个问题。

我正在尝试对服务进行简单的 POST 调用:

url = 'http://myserver/post_service'
data = urllib.urlencode({'name' : 'joe',
                         'age'  : '10'})
content = urllib2.urlopen(url=url, data=data).read()
print content

我可以看到服务器日志,它说当我发送数据时我正在执行 GET 调用 urlopen 的参数。

该库引发 404 错误(未找到),这对于 GET 调用是正确的,POST 调用处理得很好(我也在尝试在 HTML 表单中使用 POST)。


分阶段进行,并修改对象,如下所示:

# make a string with the request type in it:
method = "POST"
# create a handler. you can specify different handlers here (file uploads etc)
# but we go for the default
handler = urllib2.HTTPHandler()
# create an openerdirector instance
opener = urllib2.build_opener(handler)
# build a request
data = urllib.urlencode(dictionary_of_POST_fields_or_None)
request = urllib2.Request(url, data=data)
# add any other information you want
request.add_header("Content-Type",'application/json')
# overload the get method function with a small anonymous function...
request.get_method = lambda: method
# try it; don't forget to catch the result
try:
    connection = opener.open(request)
except urllib2.HTTPError,e:
    connection = e

# check. Substitute with appropriate HTTP code.
if connection.code == 200:
    data = connection.read()
else:
    # handle the error case. connection.read() will still contain data
    # if any was returned, but it probably won't be of any use

这种方式可以让你扩展到制作PUT, DELETE, HEAD and OPTIONS也可以请求,只需替换方法的值,甚至将其包装在函数中即可。根据您想要执行的操作,您可能还需要不同的 HTTP 处理程序,例如用于多文件上传。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 urllib2 进行 POST 调用而不是 GET 的相关文章

  • 需要根据数据框中的行号应用不同的公式

    我正在努力在数据框中找到某种移动平均值 该公式将根据正在计算的行数而变化 实际场景是我需要计算Z列 Edit 2 以下是我正在使用的实际数据 Date Open High Low Close 0 01 01 2018 1763 95 176
  • Discord.py 斜线命令在 cogs 中不起作用

    我正在构建一个不和谐的机器人 并且想要在 cogs 内使用斜杠命令 但这些命令不显示或工作 这是代码 cog guild ids 858573429787066368 861507832934563851 class Slash comma
  • NumPy 数组与 SQLite

    我在 Python 中见过的最常见的 SQLite 接口是sqlite3 但是有什么东西可以很好地与 NumPy 数组或 rearray 配合使用吗 我的意思是 它可以识别数据类型 不需要逐行插入 并提取到 NumPy rec 数组中 有点
  • 对法语文本进行词形还原[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些法语文本需要以某种方式进行处理 为此 我需要 首先 将文本标记为单词 然后对这些单词进行词形还原以避免多次处理相同的词根 据我
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • Python 中“is”运算符的语义是什么?

    如何is运算符确定两个对象是否相同 它是如何工作的 我找不到它的记录 来自文档 http docs python org reference datamodel html 每个对象都有一个身份 一个类型 和一个值 对象的身份 一旦发生就永远
  • 如何在Python中手动对数字列表进行排序?

    规格 Ubuntu 13 04 Python 3 3 1 背景 Python的初学者 遇到了这个 手动排序 问题 我被要求做的事情 让用户输入 3 个数值并将它们存储在 3 个不同的变量中 不使用列表或排序算法 手动将这 3 个数字从小到大
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 当元组列表中相同项目的值是字符串时,对它们的值求和

    如果我有这样的元组列表 my list books 5 books 10 ink 20 paper 15 paper 20 paper 15 我怎样才能把列表变成这样 books 15 ink 20 paper 50 即添加同一项目的费用
  • 如何在 python 中使用交叉验证执行 GridSearchCV

    我正在执行超参数调整RandomForest如下使用GridSearchCV X np array df features all features y np array df gold standard labels x train x
  • ImproperlyConfigured at / 不允许空静态前缀 - Django

    我正在使用 Django 上传 显示图像 该网站部署在 Heroku 上 下列的this https coderwall com p bz0sng教程我能够成功上传图像 但是 图像并未显示在模板中 然后我了解到我的 urls py 末尾应该
  • Pandas 中每列的曲线拟合 + 外推值

    我有一个包含大约 300 列的数据集 每一列都与深度相关 Pandas DataFrame 的简化版本看起来像这样 import matplotlib pyplot as plt import numpy as np import pand
  • 为什么 pip 已经是最新的了却要求我升级?

    我全新安装了 python 3 7 1 64 位 并使用最新的 pyCharm 作为我的 IDE 我在这台机器上没有安装其他 python 我去安装 numpy 并收到以下消息 venv C Users John PycharmProjec
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • Kivy TextInput 水平和垂直对齐(文本居中)

    如何在 Kivy 的 TextInput 中水平居中文本 I have the following screen But I want to centralize my text like this 这是我的 kv 语言的一部分 BoxLa
  • 列表中的特定范围(python)

    我有一个从文本字符串中提取的整数列表 因此当我打印该列表 我称之为test I get 135 2256 1984 3985 1991 1023 1999 我想打印或制作一个仅包含特定范围内的数字的新列表 例如1000 2000之间 我尝试
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • 将二进制数据视为文件对象?

    在此代码片段 由另一个人编写 中 self archive是一个大文件的路径并且raw file是以二进制数据形式读取的文件内容 with open self archive rb as f f seek offset raw file s
  • 如何使用 keras.backend.gradients() 获取梯度值

    我试图获得 Keras 模型的输出相对于模型输入 x 而不是权重 的导数 似乎最简单的方法是使用 keras backend 中的 梯度 它返回梯度张量 https keras io backend https keras io backe
  • 将二进制数转换为包含每个二进制数的数组

    我试图将二进制值转换为每个 1 0 的列表 但我得到默认的二进制值而不是列表 我有一个字符串 我将每个字符转换为二进制 它给了我一个列表 其中每个字符都有一个字符串 现在我试图将每个字符串拆分为值为 0 1 的整数 但我什么也得不到 if

随机推荐

  • Android获取以编程方式创建的视图的宽度

    我以编程方式创建了 TextView 如下所示 TextView mTextView new TextView getApplicationContext final LayoutParams params new TableLayout
  • WPF ListView ScrollBar 可见为 false

    即使需要 是否可以强制水平 或垂直 滚动不显示 问题是我需要根据项目显示不同的颜色 效果很好 但您可以清楚地看到颜色没有到达列表视图的两个边缘 这有点难看 更糟糕的是 我的列表视图中有另一个列表视图 其中包含另一个项目列表 这些项目的背景甚
  • Firefox 中背景图像的过渡?

    我正在尝试为此寻找替代方案 transition background image 1s whatever in firefox因为它只适用于 webkit 浏览器 我已经尝试过不透明度替代方案 但这对我来说不是一个选择 因为我在背景容器上
  • git - 无法拉取或提交

    我在提交和拉取时遇到问题 在提交 IDE 中我看到 warning not all local changes may be shown due to an error unable to read tree 并且只有我的文件提交的一部分在
  • 我可以在我不拥有的类型上使用 DebuggerTypeProxyAttribute 之类的东西吗?

    我有一个IClaimsPrincipal变量 我想看看其中有多少索赔 在监视窗口中导航属性很复杂 因此我想自定义该对象的显示方式 我知道 DebuggerTypeProxy 属性 http msdn microsoft com en us
  • jQuery 美元符号混淆

    我对 jQuery 中的美元符号有点困惑 希望有人能帮助我 我有以下函数声明 function create discussion button click function alert Clicked listitems tr click
  • PHP 的 Curl 无法在 AppEngine 上运行

    在本地 AppEngine 上 curl 请求给出以下结果 这正是我所期望的 url gt https spreadsheets google com feeds spreadsheets private full content type
  • 定时器触发不会触发队列但手动录入会触发-Python

    我有一个队列触发器 当消息手动添加到队列中时 它会启动并按预期运行 但是 当消息通过以下定时器触发函数写入队列时 它无法启动 我可以看到触发器已成功写入消息 init py import datetime import logging im
  • 在 HTTPServlet 请求中编码 UTF-8

    这可能看起来像是一个已经解决的问题 但事实并非如此 因为我已经解决了所有涉及 UTF 8 的问题 但没有一个解决方案对我有帮助 我使用 JSON 简单库向包含 JSON 对象的 java servlet 发送 http 请求 我在Tomca
  • 如何同时针对多种类型专门化方法

    我有这样的代码 template lt class T gt struct Value quite a lot of other functions which I do not want to specialize too void pr
  • LINQ 使用 OR 连接

    我想使用 OR 语句与 LINQ 进行 JOIN 这是我开始的 SQL 查询 SELECT t id FROM Teams t INNER JOIN Games g ON g homeTeamId t id OR g awayTeamId
  • 如何跟踪 WinForms 中任何子控件何时获得或失去焦点?

    我有一个 Windows 窗体自定义控件 其作用类似于面板 因为它可以包含任意数量的子项 子控件的数量和类型是在运行时确定的 因此我需要以通用方式工作 而不知道可能存在或不存在的确切子控件 我想根据面板是否包含焦点来更改面板的背景颜色 因此
  • 在视图导出中获取摘要计数?

    我需要将视图导出到 Excel 我已经在某处找到了一些代码 它在 xpages 中运行得很好 现在用户想要添加总计摘要 我会解释 我有一个包含用户名 项目 ID 和设备 ID 的文档 我需要做的是导出具有特定项目 ID 的所有文档 在导出中
  • 如何在 C# 中更新查询字符串?

    网址中的某处有一个 sortBy 6 如何在单击按钮时将其更新为 sortBy 4 或 sortBy 2 我是否需要编写自定义字符串函数来创建正确的重定向 URL 如果我只需要附加一个查询字符串变量我会这样做 string complete
  • 使用此椭圆曲线点乘法计算的点不在曲线上,此类带来算术异常

    我得到了使用标准投影坐标进行点乘错误的堆栈 我不知道我错过了什么 但相乘的点并不位于曲线上 有时它会输出类似的内容算术异常 整数不可逆 public class ECPointArthimetic EllipticCurve ec priv
  • 在 redhat linux 上安装 docker - 'container-selinux' 和 'selinux-policy' 问题

    我在 EC2 上有 Linux 并尝试安装 Docker 如何解决 container selinux 和 selinux policy 的问题 lsb release d Description Red Hat Enterprise Li
  • 避免 R 中的 for 循环

    我想要一些关于编写更好的 R 代码的建议 我目前在 R 中编写了一个循环 但它存在性能问题 我无法集中精力对其进行矢量化 因为输出数据帧中的每一行都依赖于较早的行 并且它们会迭代地向下流动 因此我编写了一个循环来按顺序读 写行 我的代码示例
  • ruby-method_missing 返回无方法错误

    我正在尝试使用 method missing 将美元转换为不同的货币 class Numeric currency euro gt 2 yen gt 6 def method missing method id args block met
  • 类型错误:performanceMeasurement.startMeasurement 不是函数

    当尝试在 Next 13 中从 azure msal react 登录时 就发生了错误 当我检查错误日志时 它来自核心库 azure msal react 我也尝试过登录弹出窗口 但错误仍然相同 我有代码 在我的auth ts export
  • 使用 urllib2 进行 POST 调用而不是 GET

    关于 urllib2 和 POST 调用有很多东西 但我遇到了一个问题 我正在尝试对服务进行简单的 POST 调用 url http myserver post service data urllib urlencode name joe