Python httplib 和 POST

2024-06-29

我目前正在使用别人编写的一段代码。它用httplib向服务器发出请求。它以正确的格式提供所有数据 - 例如消息正文、标头值等。

问题是,每次尝试发送 POST 请求时,数据都在那里 - 我可以在客户端看到它,但没有任何内容到达服务器。我已经阅读了库规范,用法似乎是正确的。

提取的库调用如下:

import httplib

conn = httplib.HTTPConnection('monkeylabs.pl', 80)
conn.connect()
request = conn.putrequest('POST', '/api/snippet/')
headers = {}
headers['Content-Type'] = 'application/json'
headers['User-Agent'] = 'Envjs/1.618 (SpyderMonkey; U; Linux x86_64 2.6.38-10-generic;  pl_PL.utf8; rv:2.7.1) Resig/20070309 PilotFish/1.3.pre03'
headers['Accept'] = '*/*'
for k in headers:
    conn.putheader(k, headers[k])
conn.endheaders()

conn.send('[{"id":"route"}]')

resp = conn.getresponse()
print resp.status
print resp.reason
print resp.read()

conn.close()

这是一些已知问题还是什么?我正在使用Python 2.7。不知道如何检查 httplib 的版本。

请不要建议将 httplib 替换为其他东西,除非它非常相似(也许是 httplib2)。正如我所说,该代码不是我的,而且它的数量比我刚刚在上面发布的要多得多。重构它会导致一个大问题。我对任何可靠的解决方法感兴趣。

EDIT

调试输出:

send: 'POST /api/snippet/ HTTP/1.1\r\nHost: monkeylabs.pl\r\nAccept-Encoding: identity\r\nContent-Type: application/json\r\nAccept: */*\r\nUser-Agent: Envjs/1.618 (SpyderMonkey; U; Linux x86_64 2.6.38-10-generic; pl_PL.utf8; rv:2.7.1) Resig/20070309 PilotFish/1.3.pre03\r\n\r\n[{"id":"route"}]'
reply: 'HTTP/1.0 201 CREATED\r\n'
header: Date: Fri, 10 Jun 2011 23:54:00 GMT
header: Server: WSGIServer/0.1 Python/2.7.1+
header: Vary: Cookie
header: Content-Type: application/json
header: Content-Length: 0
201
CREATED

请注意,回复后的信息实际上谈论的是服务器回复,而不是请求本身,在本例中请求本身为空。主要原因是请求主体本身是空的,我可以通过获取日志来观察:

[11/Jun/2011 01:54:00] "POST /api/snippet/ HTTP/1.1" 201 0

那三行:

``
<QueryDict: {}>
<QueryDict: {}>

out of:

print '`%s`' % request.raw_post_data
print request.GET
print request.POST

在 Django 服务器上。所以看起来它尝试发送正文但最终没有发送。

EDIT(2)

好吧,我进行了转储,它确实告诉我,在从浏览器发送的消息中,有一个名为“Content-Length”的附加参数,该参数在库的常规使用中已被省略。愚蠢的我。


The putrequest方法不会自动添加 Content Length 标头,您需要自己添加或使用request方法。

将其添加到您的代码上方for loop:

headers['Content-Length'] = "%d"%(len('[{"id":"route"}]'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python httplib 和 POST 的相关文章

  • Django - form_valid() 与 save()

    在 django 表单中 为了保存我通常使用的其他数据form valid 但因为我也可以使用save 表单类的方法 今天我重写了save 代替form valid 我的多对多领域出现了问题 使用时 manytomanyfield 的值不会
  • 我可以使用类属性作为实例方法的默认值吗?

    我想使用类属性作为我的类的参数之一的默认值 init 方法 这个构造提出了一个NameError不过 例外 我不明白为什么 class MyClass DefaultName DefaultName def init self name M
  • 如何有效地检查Python中的连续范围

    根据范围分配等级 def getGrade size grade if size lt 32 grade p4 elif size gt 32 and size lt 64 grade p6 elif size gt 64 and size
  • Python 元组列表到 int 列表

    所以我有x 12 1 3 元组列表 我想要x 12 1 3 整数列表 以最好的方式可能 你能帮忙吗 你没有说 最好 是什么意思 但大概你的意思是 最Pythonic 或 最易读 或类似的东西 F3AR3DLEGEND 给出的列表理解可能是最
  • 一个类的多个实例

    我正在尝试用 python 编写各种动物的生活模拟 不可能命名我将要使用的类的每个实例 因为我无法知道会有多少个实例 所以 我的问题是 如何自动为对象命名 我正在考虑创建一个 Herd 类 它可以是该类型的所有动物同时存活 嗯 通常 您只需
  • Python,针对频繁模式的网络日志数据挖掘

    我需要开发一个用于网络日志数据挖掘的工具 由于在特定用户会话中请求了许多 url 序列 从 Web 应用程序日志中检索 我需要找出网站用户的使用模式和组 集群 我是数据挖掘的新手 现在经常检查谷歌 发现一些有用的信息 即查询似乎指向几乎完全
  • 在进程之间共享列表的正确方法?

    我想设置两个子流程 其中subprocess1不断生成数据 类型为list and subprocess2负责处理发来的数据subprocess1 I used multiprocessing Manager list 创建共享列表 但这是
  • 在 scipy 中按稀疏矩阵分组并返回一个矩阵

    关于使用 SO 处理有几个问题groupby与稀疏矩阵 然而输出似乎是列表 字典 https stackoverflow com questions 35410839 group by on scipy sparse matrix 数据框
  • 有没有办法可以保留子线程的上下文局部变量?

    目前 我创建了一个库来记录后端调用 例如对boto3 and requests库 然后根据一些数据 例如响应的状态代码等 填充全局 数据 对象 我原来有data对象作为全局的 但后来我意识到这是一个坏主意 因为当应用程序并行运行时 data
  • 如何为 apache beam 数据流的输出 csv 添加标头?

    我注意到在java SDK中 有一个函数可以让你编写csv文件的标题 https cloud google com dataflow java sdk JavaDoc com google cloud dataflow sdk io Tex
  • 姜戈 - 信号。简单的例子开始

    我是 Django 新手 无法理解如何使用 Django 信号 谁能解释一下 Django 信号 用简单的例子 提前致谢 通过做一些很小的研究 你可以在互联网上找到关于 django 信号的非常好的内容 在这里我将向您简要介绍 Django
  • 手动将行添加到 StreamingHttpResponse (Django)

    我正在使用 Django 的 StreamingHttpResponse 动态传输大型 CSV 文件 根据the docs https docs djangoproject com en 1 11 ref request response
  • 如何在 pywebview 中使无框窗口可拖动?

    我最近一直在使用 pywebview 和 Flask 来开发桌面应用程序 我想使用无框窗口功能并创建自己的标题栏 但问题是我不知道如何使该无框窗口可拖动 文档说它可以通过拖动任何点来移动 但对我来说情况并非如此 有任何想法吗 拖动区域 ht
  • Python:UnboundLocalError:赋值前引用的局部变量“count”[重复]

    这个问题在这里已经有答案了 我不明白我的 Python 代码有什么问题 它给了我以下错误 Traceback most recent call last File main py line 77 in
  • 启动robotframework-RIDE(机器人框架IDE)时出错

    我已经安装了Robot Framework并安装了wxPython 然后安装了Ride 当我通过执行启动它时python ride py 它会遇到如下错误 我相信这与wxPython版本有关 不确定 有一系列UnreprError像这样
  • 持久子进程.Popen 会话

    我正在尝试运行一个命令 然后在同一环境中运行另一个命令 比如说 如果我在第一个命令中设置环境变量 我希望它可用于第二个命令 我试过这个 import subprocess process subprocess Popen echo test
  • pandas.algos._return_false 在 CentOS 上使用 dill.dump_session 导致 PicklingError

    我有一个代码框架 其中涉及使用 dill 转储会话 这曾经工作得很好 直到我开始使用 pandas 以下代码在 CentOS 6 5 版本上引发 PicklingError import pandas import dill dill du
  • 如何使用 TfIdfVectorizer 通过 SciKitLearn 对文档进行分类?

    以下示例展示了如何使用 Sklearn 20 新闻组数据训练分类器 gt gt gt from sklearn feature extraction text import TfidfVectorizer gt gt gt categori
  • 在Python中使用argparse解析整个JSON

    我正在尝试使用 ARGPARSE 库在一个简单的参数中解析整个 Json 问题是当它遇到儿子内部的不同元素 例如 和 时 它会突然停止 这是测试代码 parse py import argparse parser argparse Argu
  • Python 内存使用情况

    因此 我有一些代码接收一组文件 将其可以缝合在一起 然后绘制它们 我发布了大部分代码 试图使其更具可读性 如果需要 可以添加更多代码 for paths dirs files in os walk start path for d in d

随机推荐

  • 如何循环遍历列表中除最后一项之外的所有项? [复制]

    这个问题在这里已经有答案了 Using a for循环 如何循环遍历列表中除最后一项之外的所有项 我想遍历一个列表 检查每个项目与后面的项目 我可以在不使用索引的情况下做到这一点吗 for x in y 1 If y是一个生成器 那么上面的
  • Aptana 函数定义弹出窗口

    我注意到在 Aptana 2 0 和 1 5 1 中 当输入 php 函数时 您不再看到显示函数描述及其参数的弹出窗口 有谁知道如何让它再次工作 因为我非常依赖它来记住哪些参数去了哪里 Open in PHP Manual捷径Shift F
  • 不接受基于脚本的保留关键字,但在标记中接受

    在这里我提出一个问题保留字 据我所知 关键字不能是变量 我遇到了一个问题 即在两个基于脚本的代码中将保留字字符串作为参数传递 但在基于标签的代码中编写相同的代码时不会遇到任何错误 我的问题是 我将参数名称传递为For 如果它是保留字意味着我
  • UWP - 绑定枚举差异

    我遇到了一个非常有趣的问题 假设 UWP 应用中有以下 XAML 页面内容
  • 将组合框列数据绑定到每行(不是整列)的 datagridview

    有一些关于此的帖子 但经过几个小时的搜索后我仍然找不到我需要的东西 下面帖子中的答案几乎让我得到了我想要的 DataGridView 中外键的组合框 https stackoverflow com questions 2256924 com
  • aioboto3 加速未达到预期

    我正在尝试 aioboto3 库 它看起来非常有希望加快某些任务的速度 例如 我需要查找特定存储桶和前缀内所有 S3 对象的标签 但不幸的是速度的提高并不是我所希望的 对于 1000 个对象 大约只需要一半的时间 8000 个对象 时间差不
  • 在 Ruby 中显示 HTTP 请求的标头和正文

    我确信这很容易 但我进行了相当广泛的搜索 但无法找到答案 我正在使用Net HttpRuby 中的库 我想弄清楚如何显示 HTTP GET 请求的完整正文 像下面这样 GET really long path index html q fo
  • 同步从 AWS lambda.invoke 获取值

    我尝试使用以下命令从另一个 Lambda 函数调用 AWS Lambda 函数invoke方法与RequestResponse调用类型并检索从 Lambda 返回的值 当我打电话给lambda invoke using await回调似乎仍
  • Linkedin API - UGCPost 视频 url 丢失

    我正在使用以下端点来获取帖子 media recipes urn li digitalmediaProcessedAsset urn li digitalmediaAsset XXXXXXXXXX urn li digitalmediaRe
  • 故事板 - “圆形文本字段”警告的位置不明确

    https stackoverflow com a 16251810 2589276 https stackoverflow com a 16251810 2589276 我解决了上述问题 但当我按照指示的步骤操作时遇到了新问题 现在我收到
  • Python - 从一定范围内随机采样,同时避免某些值

    我一直在阅读有关random sample 函数在random模块 但没有看到任何可以解决我的问题的东西 我知道使用random sample range 1 100 5 会给我来自 人群 的 5 个独特样本 我想得到一个随机数range
  • Angular - 终止 Observables 的首选方式是什么?

    根据我对 Angular 和 RxJs 的理解 有两种方法可以终止 Observables 你可以unsubscribe 从他们那里或使用takeUntil and complete 以下是每种方法的示例 以伪代码形式 unsubscrib
  • Visual Basic 中未知长度的数组

    我有一段用 Visual Basic 编写的代码 Dim n As Double i As Integer n 4 Dim Ramp length 1 To 4 As Double For i 1 To n Ramp length i Ce
  • 如何在 shell 脚本中使用正则表达式提取字符串?

    我想使用正则表达式提取字符串的一部分 例如 如何从 name多变的 name a href http www google com here a domain name apply some regex on name Using bash
  • css bootstrap 下拉菜单在 IE 中看起来不同

    我正在使用CSS引导程序3 2 0 http getbootstrap com css 然而 当在 IE 中查看该网站时 菜单选项周围有一个黑色边框 而且下拉菜单按钮看起来也有所不同 如果您查看该网站http getbootstrap co
  • 回答“哪个方法调用了我?”在.NET 运行时?或者代码可以读取 CallStack 数据吗?

    假设有 methodS methodS 和 methodS methodC 在运行时被调用 是否可以知道 methodC 是从哪个方法调用的 我在想是否可以在运行时读取CallStack进行一些检查 如果是的话 我想应该没什么大不了的 有任
  • 如何“全局”捕获对象实例中引发的异常

    我目前正在编写一个 winforms 应用程序 C 我正在使用企业库异常处理块 遵循我所看到的相当标准的方法 IE 在 Program cs 的 Main 方法中 我已将事件处理程序连接到 Application ThreadExcepti
  • argc 和 argv 在 Windows 中没有用吗?

    在 Linux 中 argc 和 argv 计算终端中的参数 但在 Windows 中 我找不到放置第二个参数的地方 事实上 每次我运行该程序时 它都会创建那个丑陋的黑色窗口 我什至没有机会给出任何争论 那么这两个变量在Windows平台下
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • Python httplib 和 POST

    我目前正在使用别人编写的一段代码 它用httplib向服务器发出请求 它以正确的格式提供所有数据 例如消息正文 标头值等 问题是 每次尝试发送 POST 请求时 数据都在那里 我可以在客户端看到它 但没有任何内容到达服务器 我已经阅读了库规