POST响应长度非零,但读取为空
我正在跟着这个Virtuoso Web服务的例子。我发现在进行POST请求时,返回的内容长度是非零的,但用.read()读取的却是空的。这种情况只发生在POST请求成功的时候。如果我故意出错,就会得到非零的.read()结果。
import httplib
url = 'lod.openlinksw.com'
xmlString = '''<?xml version="1.0"?>
<query xmlns="http://openlinksw.com/services/facets/1.0" inference="" same-as="">
<text>Seattle Mariners traveled all the way to Japan to watch</text>
<view type="text" limit="20" offset=""/>
</query>'''
xml = open('a.xml','w')
xml.write(xmlString)
xml.close()
xml = open('a.xml')
headers = {'Content-Type': 'text/xml',}
conn = httplib.HTTPConnection(url)
conn.request("POST", "/fct/service", xml, headers)
re = conn.getresponse()
conn.close()
data = re.read()
print re.reason, re.status, '| len:', re.length, '| read() len:', len(data)
返回...
OK 200 | len: 19902 | read() len: 0
如果你故意把XML弄错(比如把"query"改成"queryzzz")...
Internal Server Error 500 | len: 0 | read() len: 340
我相信我只是做了什么傻事。我的19902字节的响应去哪儿了?
1 个回答
3
把
conn.close()
data = re.read()
改成
data = re.read()
conn.close()
在关闭连接之前,你需要先读取数据,否则任何尚未传输的字节都会丢失。