【问题标题】:python urllib2 post request [duplicate]python urllib2发布请求[重复]
【发布时间】:2023-03-11 18:02:02
【问题描述】:

是否可以将这段代码改编为 make put 请求:

#!/usr/bin/python

import urllib2, base64, urllib

dir="https://domain.com/api/v1/"
use="one@two.com"
pas="123456"

base64string = base64.encodestring('%s:%s' % (use, pas)).replace('\n', '')

request = urllib2.Request(dir, headers={"Authorization" : "Basic %s" % base64string})
response = urllib2.urlopen(request).read()

print response

我尝试使用其他代码,但我认为它会执行获取请求,不是吗?

#!/usr/bin/python

import urllib2, base64, urllib

dir="https://domain.com/api/v1/"
use="one@two.com"
pas="123456"

values = {
      'list' :["201.22.44.12","8.7.6.0/24"]
    }

data = urllib.urlencode(values)

base64string = base64.encodestring('%s:%s' % (use, pas)).replace('\n', '')

request = urllib2.Request(dir, data, headers={"Authorization" : "Basic %s" % base64string})
response = urllib2.urlopen(request).read()

【问题讨论】:

    标签: python urllib2 put


    【解决方案1】:

    我不确定它是否适合你,但请检查这段代码

    您可以像这样使用 urllib 对 dict 进行编码:

    import urllib
    import urllib2
    
    url = 'http://example.com/...'
    values = { 'productslug': 'bar','qty': 'bar' }
    data = urllib.urlencode(values)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req)
    result = response.read()
    print result
    

    【讨论】:

    • 是的,这项工作,但唯一的问题是 urlencode,就我而言,这会在请求中产生错误。
    • 检查是否以字典格式出现的值,你能告诉我发生了什么错误
    • 就我而言,我不需要 urlencode。但要了解更多信息,如果响应是 gzip 格式,则打印需要:if response.info().get('Content-Encoding') == 'gzip': buf = StringIO( response.read()) f = gzip.GzipFile(fileobj=buf) data = f.read() # Imprimir bonito print json.dumps(json.loads(data), sort_keys = True, indent = 2)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多