gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:24:52 25 4
gpt4 key购买 nike

使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com