使用 httplib POST 二进制数据导致 Unicode 异常

2023-12-06

当我尝试使用 urllib2 发送图像时,发生 UnicodeDecodeError 异常。

HTTP 帖子正文:

f = open(imagepath, "rb")
binary = f.read()
mimetype, devnull = mimetypes.guess_type(urllib.pathname2url(imagepath))

body = """Content-Length: {size}
Content-Type: {mimetype}

{binary}
""".format(size=os.path.getsize(imagepath),  
           mimetype=mimetype,
           binary=binary)

request = urllib2.Request(url, body, headers)
opener = urllib2.build_opener(urllib2.HTTPSHandler(debuglevel=1))
response = opener.open(request)
print response.read()

追溯 :

   response = opener.open(request)
  File "/usr/local/lib/python2.7/urllib2.py", line 404, in open
    response = self._open(req, data)
  File "/usr/local/lib/python2.7/urllib2.py", line 422, in _open
    '_open', req)
  File "/usr/local/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/usr/local/lib/python2.7/urllib2.py", line 1222, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
  File "/usr/local/lib/python2.7/urllib2.py", line 1181, in do_open
    h.request(req.get_method(), req.get_selector(), req.data, headers)
  File "/usr/local/lib/python2.7/httplib.py", line 973, in request
    self._send_request(method, url, body, headers)
  File "/usr/local/lib/python2.7/httplib.py", line 1007, in _send_request
    self.endheaders(body)
  File "/usr/local/lib/python2.7/httplib.py", line 969, in endheaders
    self._send_output(message_body)
  File "/usr/local/lib/python2.7/httplib.py", line 827, in _send_output
    msg += message_body
  File "/home/usertmp/biogeek/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 49: invalid start byte

蟒蛇版本2.7.5

有人知道这个问题的解决方案吗?


您正在尝试发送包含标题和内容的正文。如果要发送内容类型和内容长度,则需要在标头中执行,而不是在正文中执行:

headers = {'Content-Type': mimetype, 'Content-Length', str(size)}
request = urllib2.Request(url, data=binary, headers=headers)

如果不设置 Content-Length 标头,它将自动设置为data

至于你的错误:它发生在线路上

msg += message_body

仅当这两个字符串之一为unicode, 和另一个str含有\xff,在这种情况下,后者将使用自动 coecred 为 unicodesys.getdefaultencoding().

我的最终猜测是:message_body这是你的data,这是一个str并包含\xff某处。msg是之前传递给 HTTPConnection 的内容,即标头,它们是 unicode,因为您在标头中至少使用了一个键(这些值被转换为str之前),或者您已经导入unicode_literals from __futures__.

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

使用 httplib POST 二进制数据导致 Unicode 异常 的相关文章

  • 通过 Python 与 Windows 控制台应用程序交互

    我在 Windows 上使用 python 2 5 我希望通过 Popen 与控制台进程交互 我目前有一小段代码 p Popen console app exe stdin PIPE stdout PIPE issue command 1
  • 更改 Inkscape 的 Python 解释器

    在使用 Inkscape 时 我不断收到错误 这似乎意味着未满足 python 2 vs 3 的期望 尽管我已经安装了它们 例如 当我尝试从模板生成新文档时 我得到 Traceback most recent call last File
  • 按 ListProperty (NDB) 对查询进行排序

    如何按 ListProperty 对查询进行排序 该模型 class Chapter ndb Model title ndb StringProperty required True version ndb IntegerProperty
  • 使用 GeoDjango 在坐标系之间进行转换

    我正在尝试将坐标信息添加到我的数据库中 添加django contrib gis支持我的应用程序 我正在写一个south数据迁移 从数据库中获取地址 并向 Google 询问坐标 到目前为止 我认为我最好的选择是使用geopy为了这 接下来
  • 同情因子简单关系

    我在 sympy 中有一个简单的因式分解问题 无法解决 我在 sympy 处理相当复杂的积分方面取得了巨大成功 但我对一些简单的事情感到困惑 如何得到 phi 2 2 phi phi 0 phi 0 2 8 因式分解 phi phi 0 2
  • 在一张图中同时绘制两个截面强度

    我有一个形状数组 512 512 看起来像 行 x 列 y 密度 z 数组的数量 0 012825 0 020408 0 022976 0 015938 0 02165 0 024357 0 036332 0 031904 0 025462
  • 01 无效令牌[重复]

    这个问题在这里已经有答案了 嘿 学习 python3有一段时间了 遇到字典和dictionary name get 方法并尝试获取随机键值 问题 data data get key 1 它有效并且返回 1 但如果我使用data get ke
  • 代理阻止网络套接字?如何绕行

    我有一个用 Python 编写的正在运行的 websocket 服务器 来自https github com opiate SimpleWebSocketServer https github com opiate SimpleWebSoc
  • Docker:通过 Gunicorn 运行 Flask 应用程序 - Worker 超时?表现不佳?

    我正在尝试创建一个用Python Flask编写的新应用程序 由gunicorn运行 然后进行dockerized 我遇到的问题是 docker 容器内的性能非常差 不一致 我最终得到了响应 但我不明白为什么性能会下降 有时我会在日志中看到
  • Python/Flask:应用程序在关闭后正在运行

    我正在开发一个简单的 Flask Web 应用程序 我使用 Eclipse Pydev 当我开发该应用程序时 由于代码更改 我必须经常重新启动该应用程序 这就是问题所在 当我运行该应用程序时 我可以在本地主机上看到该框架 这很好 但是当我想
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • 如何创建指向指针数组的 Python ctypes 指针

    我需要学习如何处理char 在下面的 C 方法中通过 Python ctypes 我通过使用调用其他只需要单个指针的方法做得很好create string buffer 但此方法需要一个指向指针数组的指针 ladybugConvertToM
  • 将带有两层分隔符的字符串转换为字典 - python

    给定一个字符串 s x t1 ny t2 nz t3 我想转换成字典 sdic x 1 y 2 z 3 我通过这样做让它工作 sdic dict tuple j split t for j in i for i in s split n F
  • 将 ASCII 字符转换为“”unicode 表示法的脚本

    我正在对 Linux 区域设置文件进行一些更改 usr share i18n locales like pt BR 并且需要格式化字符串 例如 d m Y H M 必须以 Unicode 指定 其中每个 在本例中为 ASCII 字符表示为
  • pandas apply:函数名是否带引号的区别

    简单数据框定义示例 df pd DataFrame A 2 4 1 B 8 4 1 C 6 2 7 df A B C 0 2 8 6 1 4 4 2 2 1 1 7 尝试理解以下块中函数参数调用的差异 df apply sum df app
  • 从 subprocess.Popen 获取整个输出

    我通过调用 subprocess Popen 得到了一个有点奇怪的结果 我怀疑这与我对 Python 的陌生有很大关系 args cscript USERPROFILE tools jslint js USERPROFILE tools j
  • python 的 fcntl.flock 函数是否提供文件访问的线程级锁定?

    Python 的 fcnt 模块提供了一种名为 flock 1 的方法来证明文件锁定 其描述如下 对文件执行锁定操作op 描述符 fd 文件对象提供 fileno 方法被接受为 出色地 请参阅 Unix 手册集群 2 了解详情 在某些系统上
  • 带有整数的 np.sqrt 和 where 条件返回错误结果

    当我将 numpy sqrt 方法应用于带有 a 的整数数组时 我得到了奇怪的结果where健康 状况 见下文 对于整数 a np array 1 4 9 np sqrt a where a gt 5 Out 3 array 0 0 5 3
  • 在没有numpy的情况下在python中分配变量NaN

    大多数语言都有一个 NaN 常量 您可以使用它为变量分配值 NaN python 可以在不使用 numpy 的情况下做到这一点吗 是的 使用math nan https docs python org 3 library math html
  • Elastic Beanstalk 上的 Django + MySQL - 查询 MySQL 时出错

    当我在 Elastic beanstalk 上托管的 Django 应用程序上查询 MySQL 时 出现错误 错误说 admin login 处出现操作错误 1045 用户 adminDB 172 30 23 5 的访问被拒绝 使用密码 Y

随机推荐

  • Objective-C 中的 HTTP Post 请求不起作用

    我正在编写一个 HTTP Post 请求 但由于某种原因 参数没有正确添加 而且我一生都无法弄清楚我做错了什么 这是我所拥有的 NSMutableURLRequest request NSMutableURLRequest alloc in
  • VBA - 从关闭的 Excel 工作簿中检索数据

    我正在尝试创建一个 VBA 脚本来从四个不同的工作簿收集数据 目前 我只是使用一本工作簿测试代码 但当我尝试获取数据时收到错误 虽然我想在不打开四个工作簿的情况下检索数据 但我需要打开它们才能找到最后一行数据 这是我当前的代码 Public
  • SilverStripe 4.1 - SS_DEFAULT_ADMIN_USERNAME 和 PASSWORD 不受尊重

    我有一个在 Ubuntu Vagrant VM 上运行的 SilverStripe 4 1 站点 从 3 4 升级 我有以下内容 env file Default Admin SS DEFAULT ADMIN USERNAME admin
  • 如何从 STDIN 将行导入到 Postgresql? [复制]

    这个问题在这里已经有答案了 在 Python 中 我有以下命令可以将行批量加载到 Postgresql 而不使用文件 import csv import subprocess mylist keys name fred name mary
  • video-js 自定义字体在 Firefox 中不起作用

    使用 Firefox 查看这里 我有 22 0 http www jamhouse com au 您会看到 video js 自定义字体不起作用 在 Chrome 中运行良好 任何想法将不胜感激 Watto Firefox 有极其严格的跨域
  • 如何在Java中获取.(点)之前和/(最后一个)斜杠之后的字符串

    我有一个像这样的字符串 core pages viewemployee jsff 从这段代码中 我需要获取 viewemployee 我如何使用 Java 获得这个 假设您将该字符串保存在名为的变量中myString String mySt
  • 如何在C++中添加2个任意大小的整数?

    我想在 C 中添加 2 个任意大小的整数 我该怎么做呢 Here s an example showing how to use the OpenSSL bignum implementation for arbitrary precisi
  • 无法将类型“十进制”隐式转换为“字符串”

    我正在创建的购物车中有此代码 但我收到标题中显示的错误 错误显示在这一行上 只需致电ToString获取十进制值的字符串表示形式 order Total orderTotal ToString G 虽然我不明白你为什么要存储会员Total
  • 单个引用变量如何访问所有对象字段?

    Animal myAnimal new Animal 我上面有这段代码 据我所知 它会做这些事情 将在堆内存上创建一个动物对象 对该对象的引用将传递给引用变量 myAnimal 换句话说 myAnimal 变量保存 Animal 对象在堆上
  • 如何在OpenCV2 python中查看视频流

    我开始玩Opencv 我在 Linux 上使用 opencv2 的 python 绑定 我编写了一个快速测试程序 但它似乎无限期地挂起 import cv2 weblink http continuous video stream here
  • Django框架中的一次性操作操作应该放在哪里?

    我想执行一些一次性操作 例如在 Django 服务器启动时启动后台线程并每 30 分钟填充一次缓存作为初始化操作 这样它就不会阻止用户访问网站 我应该将所有这些代码放在 Django 中的哪里 将它们放入setting py文件中不起作用
  • 使用(Anaconda 与 PyCharm

    我的 Linux Ubuntu 14 04 机器上运行着 Pycharm 4 除了系统 python 之外 我还安装了 Anaconda 让两者很好地协同工作似乎有点问题 PyCharm 提供了一些有趣的集成virtualenvs and
  • 是否可以更改 Python 中函数的默认参数?

    在Python中 是否可以在运行时重新定义函数的默认参数 我在这里定义了一个有3个参数的函数 def multiplyNumbers x y z return x y z print multiplyNumbers x 2 y 3 z 3
  • 在for循环中写入多个文件

    我有这样的样本数据 df lt data frame name rep letters 1 7 each 24 salary runif 24 7 100 200 我想将每个名字与他们的薪水分开 lst lt tapply df salar
  • 在Java中获取系统音频级别

    如何获得 Java 中的主卷 我想制作一个显示 不变 这个值 可能在JProgressBar或类似的东西 作为最大设置的百分比 我可能还想将当前声级显示为最高可能声级的百分比 但这不是必需的 我不完全确定 但你可以看看 Java 媒体框架
  • pytorch 等效 tf.gather

    我在将一些代码从tensorflow移植到pytorch时遇到一些问题 所以我有一个尺寸为 10x30 的矩阵 代表 10 个示例 每个示例有 30 个特征 然后我有另一个维度为 10x5 的矩阵 其中包含第一个矩阵中每个示例的 5 个最接
  • Mex 文件在 OS X 10.9 下使用 Xcode 5.1 和 MATLAB 2012a

    我正在尝试编译 OpenCV 3 0 0 的开发人员版本 但是我无法将我的系统配置为 mex C 文件 我尝试遵循 stackoverflow 的建议 目前我可以合并 c 文件 但不能合并 C 文件 我所做的是编辑mexopts sh这样就
  • 如何使用 REST API 在 Jira 中创建问题?

    如何使用 REST API 在 Jira 中创建问题 我已经尝试过使用curl 的示例 但我需要使用 Java 和 REST API 在 Eclipse 中创建缺陷 您想将 JIRA 集成到 Eclipse 中吗 See https con
  • 这是一个合理的 Objective-C 块实现吗?

    我想要 NSRegularExpression 的变体 stringByReplacingMatchesInString options range withTemplate 使用块而不是模板的方法 该块的返回值将用作替换值 正如您可以想象
  • 使用 httplib POST 二进制数据导致 Unicode 异常

    当我尝试使用 urllib2 发送图像时 发生 UnicodeDecodeError 异常 HTTP 帖子正文 f open imagepath rb binary f read mimetype devnull mimetypes gue