栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python 3中从服务器返回回复时引发BadStatusLine异常

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python 3中从服务器返回回复时引发BadStatusLine异常

经过大量的绕线之后,我找出了问题的原因和解决方案,这是设置内容长度标头的方式。在脚本的Python 3端口中,我复制了设置内容长度的方法。这是什么

headers['Content-length']=str(len(body))

那是不对的!正确的方法是这样的:

headers['Content-length']=str(len(bytes(body, 'utf-8')))

因为有效载荷必须是字节对象。当您对字节进行编码时,其长度与字符串版本不同。

return urllib.request.Request(theurl, bytes(body, 'utf-8'), headers)

使用从http.client.HTTPConnection派生的任何内容时,可以安全地省略手动设置content-
length标头的操作。它有一个内部方法来检查content-length标头,如果缺少它,则根据内容主体的长度对其进行设置,而不管其形式如何。

问题是Python 2和3之间的翻译但微妙的区别,以及如何处理字符串和对其进行编码。正常的ASCII版本在utf-8版本不起作用时一定是偶然的,哦,很好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668009.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号