2

私はPythonを学ぼうとしています。現時点では、単純なことに固執しています:( urllib2を使用してリクエストを送信すると、「Connection:close」ヘッダーが追加されます。このヘッダーなしでリクエストを送信するにはどうすればよいですか?

私のコード:

request = urllib2.Request('http://example.com')
request.add_header('User-Agent', self.client_list[self.client])
opener = urllib2.build_opener()
opener.open(request).read()

みんなありがとう、私はあなたの助けにとても感謝しています!

4

1 に答える 1

5

できません。とにかくありませんurllib2ソースコードから:

# We want to make an HTTP/1.1 request, but the addinfourl
# class isn't prepared to deal with a persistent connection.
# It will try to read all remaining data from the socket,
# which will block while the server waits for the next request.
# So make sure the connection gets closed after the (only)
# request.
headers["Connection"] = "close"

requests代わりにライブラリを使用してください。接続の維持をサポートしています。

>>> import requests
>>> import pprint
>>> r = requests.get('http://httpbin.org/get')
>>> pprint.pprint(r.json)
{u'args': {},
 u'headers': {u'Accept': u'*/*',
              u'Accept-Encoding': u'gzip, deflate, compress',
              u'Connection': u'keep-alive',
              u'Content-Length': u'',
              u'Content-Type': u'',
              u'Host': u'httpbin.org',
              u'User-Agent': u'python-requests/0.14.1 CPython/2.6.8 Darwin/11.4.2'},
 u'origin': u'176.11.12.149',
 u'url': u'http://httpbin.org/get'}

上記の例では、 http://httpbin.orgを使用してリクエストヘッダーを反映しています。ご覧のとおり、ヘッダーをrequests使用しています。Connection: keep-alive

于 2012-12-14T15:28:14.563 に答える