【发布时间】:2011-09-19 18:42:09
【问题描述】:
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
def picscrazy(str,int):
register_openers()
datagen, headers = multipart_encode({"imagefile[]": open(str, "rb")})
request = urllib2.Request("http://www.picscrazy.com/process.php", datagen, headers)
Str 是文件名,而 int 只是另一个标志。 该代码是将文件上传到图像托管网站。我正在使用海报Poster 进行发布请求。程序在请求语句后停止并给出错误。我无法理解错误是我的网络还是程序中的问题。 下面是错误的回溯:
Traceback (most recent call last):
File "C:\Documents and Settings\Administrator\Desktop\for exbii\res.py", line 42, in <module>
picscrazy(fname,1)
File "C:\Documents and Settings\Administrator\Desktop\for exbii\res.py", line 14, in picscrazy
print(urllib2.urlopen(request).read())
File "C:\Python25\Lib\urllib2.py", line 121, in urlopen
return _opener.open(url, data)
File "C:\Python25\Lib\urllib2.py", line 374, in open
response = self._open(req, data)
File "C:\Python25\Lib\urllib2.py", line 392, in _open
'_open', req)
File "C:\Python25\Lib\urllib2.py", line 353, in _call_chain
result = func(*args)
File "C:\Python25\lib\poster\streaminghttp.py", line 142, in http_open
return self.do_open(StreamingHTTPConnection, req)
File "C:\Python25\Lib\urllib2.py", line 1076, in do_open
raise URLError(err)
URLError: <urlopen error (10054, 'Connection reset by peer')>
【问题讨论】:
-
“对等连接重置”是一个提示。您的对等方(服务器)重置连接。
-
这是否意味着我上传文件的服务器拒绝了我的请求?
-
“拒绝”?很难说。它正在断开连接。谁知道为什么?您必须阅读“请求”对象的内容以获取状态代码、标题和正文。然后您可以更新您的问题以删除(几乎)无用的堆栈跟踪,并包含有关您收到的响应的真正有趣的事实。
-
问题是我没有得到任何回应。我试图在下一行打印它
print(urllib2.urlopen(request).read()),但它没有显示任何内容,只是抛出了上述错误。 -
回复有一个标题,可能是您可以打印的内容。请更新这个问题,如果它是可用的。如果您无法显示标题,那么您的服务器只是在没有太多警告的情况下将您切断。