我正在尝试从使用AJAX发布的本地javascript程序中读取发送到python&#s; http.server的数据。一切都在python 2.7中工作,就像在this示例中一样,但现在在python 3+中,我无法再访问标题以获得文件长度。
# python 2.7 (works!)
class handler_class(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_POST(self):
if self.path == '/data':
length = int(self.headers.getheader('Content-Length'))
NewData = self.rfile.read(length)
我发现我可以使用urllib.request,正如我在下面嘲笑的那样。但是,我在本地主机上运行,并且没有像我在示例中看到的那样有完整的URL,我开始猜测这是否是正确的方法?令人沮丧的是,我可以看到在控制台中打印出的内容长度,但我无法访问它。
# python 3+ (url?)
import urllib.request
class handler_class(http.server.SimpleHTTPRequestHandler):
def do_POST(self):
if self.path == '/data':
print(self.headers) # I can see the content length here but cannot access it!
d = urllib.request.urlopen(url) # what url?
length = int(d.getheader('Content-Length'))
NewData = self.rfile.read(length)
我尝试的各种网址是:
self.path
http://localhost:8000/data
/data
我通常会收到此错误:
ValueError: unknown url type: '/data'
为什么' urllib.request'让我失望,更重要的是,如何访问“自我”和“自我”。在这个Python3世界中?