python - 如何使用 python poster lib 通过带有 cookie 的 HTTP 发布文件

标签 python http cookies file-upload

使用 Chris Atlee 的 python poster library有什么方法可以包括 cookie 处理吗? 我有 python http 登录代码,它与 cookie 一起使用:

cookiejar = cookielib.CookieJar()
urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
request = urllib2.Request(login_url, params)
result = urlOpener.open(request)

但是当我需要上传文件时,我不知道如何同时使用海报库代码和cookie 处理代码。 Poster lib 似乎需要调用 urllib2.urlopen() 而不是某些自定义 url opener,如上面的代码所示。

例如,我不知道如何将 cookie 与下面的 python 文件发布代码一起使用:

register_openers()
params = {'file': open("test.txt", "rb"), 'name': 'upload test'}
datagen, headers = multipart_encode(params)
request = urllib2.Request(upload_url, datagen, headers)
result = urllib2.urlopen(request)

最佳答案

我给 Chris AtLee 发了一封电子邮件,询问我们是否可以获得一个基本的身份验证示例。他很乐意回答我的问题,甚至运行了一些我发给他的示例代码。

要包括 cookie 处理,您可以执行以下操作:

opener = poster.streaminghttp.register_openers()
opener.add_handler(urllib2.HTTPCookieProcessor(cookielib.CookieJar())) # Add cookie handler
params = {'file': open("test.txt", "rb"), 'name': 'upload test'}
datagen, headers = poster.encode.multipart_encode(params)
request = urllib2.Request(upload_url, datagen, headers)
result = urllib2.urlopen(request)

要向请求添加基本身份验证,您只需执行以下操作(为了完整性,我添加了 base64 编码行):

opener = poster.streaminghttp.register_openers()
params = {'file': open("test.txt", "rb"), 'name': 'upload test'}
datagen, headers = poster.encode.multipart_encode(params)
request = urllib2.Request(upload_url, datagen, headers)
auth = base64.encodestring('%s:%s' % ('username', 'password'))[:-1] # This is just standard un/pw encoding  
request.add_header('Authorization', 'Basic %s' % auth ) # Add Auth header to request
result = urllib2.urlopen(request)

希望这对您有所帮助。还要感谢 Chris AtLee。

关于python - 如何使用 python poster lib 通过带有 cookie 的 HTTP 发布文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690446/

相关文章:

python - 套接字 : 2 way communication in python

python - 生成大量不重复的点列表

python - 为什么台球多处理模块需要 "if __name__==' __main_ _'"行?

Java HTTP 全双工

http - 用于处理持久 HTTP 连接上的多个请求的 CGI

java - jax-rs 客户端发布如何同时接收 JSON 和 Cookie?

tomcat - Safari 子域 cookie 问题

python - Pyjnius导入jar文件

security - 为什么 Amazon Web Services 的登录页面 URL 很长

cookies - 在asp.net core中从cookie中读取值