0
import urllib2,urllib
params = {}
resp = urllib2.urlopen('http://somewhere/',urllib.urlencode(params))

在 urlopen() 方法中,方法 'get' 或 'post' 没有 argv。这种方法可以通过所需的 url 找出“get”或“post”吗

4

2 回答 2

1

文档中:

urllib2.urlopen(url[, data][, timeout])

data可以是一个字符串,指定要发送到服务器的附加数据,或者None如果不需要此类数据。目前,HTTP 请求是唯一使用data; 提供参数时,HTTP 请求将是 aPOST而不是 a 。应该是标准格式的缓冲区。该 函数采用 2 元组的映射或序列,并以这种格式返回一个字符串。urllib2 模块发送 包含 Connection:close 标头的请求。GETdatadataapplication/x-www-form-urlencodedurllib.urlencode()HTTP/1.1

于 2013-02-17T08:55:25.613 回答
1

它计算出GETPOST基于给定的参数。在您的情况下,这将是POST因为提供了参数字典。

使用POST你可以这样做(来自文档

import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
print f.read()

请注意,我们在这里将字典传递给函数。

要使用GET,我们只需单独传递 URL(这里我们使用字符串插值将参数添加到 URL,而不是将其传递给 URL lib)

import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
print f.read()
于 2013-02-17T08:55:35.553 回答