首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >尝试向具有python套接字库的服务器发送请求时,出现类型错误

尝试向具有python套接字库的服务器发送请求时,出现类型错误
EN

Stack Overflow用户
提问于 2018-07-04 05:43:58
回答 1查看 274关注 0票数 0

当我向服务器"www.python.org“发出请求时,我似乎得到了一个类型错误。我刚刚开始学习网络,我正在复习基础知识。我理解为什么类型错误本身会发生,因为字符串不是预期的,但根据我正在阅读的PDF教程,这是向服务器发出请求的格式,我输入错了吗??如何避免类型错误?谢谢。代码如下:

代码语言:javascript
复制
from socket import *

s = socket(AF_INET,SOCK_STREAM)
s.connect(("www.python.org",80)) # connect
s.send("GET /index.html HTTP/1.0\n\n") # send request
data = s.recv(10000) # get response
s.close()
EN

回答 1

Stack Overflow用户

发布于 2018-07-04 05:51:00

看起来你正在使用Python3。在Python3中,字符串文字是unicode对象。Unicode对象不能通过网络套接字发送,只能发送字节。

您正在阅读的教程可能是为Python 2编写的,其中字符串文字是字节而不是unicode。

在Python 2中:

代码语言:javascript
复制
this_is_bytes = "my string"
this_is_unicode = u"my string"

在Python 3中,默认情况下改变为使用unicode字符串:

代码语言:javascript
复制
this_is_bytes = b"my string"
this_is_unicode = "my string"

您需要将unicode字符串编码为字节:

s.send("GET /index.html HTTP/1.0\n\n".encode('ascii')) # send request

或使用字节字面量:

s.send(b"GET /index.html HTTP/1.0\n\n") # send request

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51163173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档