使用MSXML2.ServerXMLHTTP访问网页中的数据会返回Lua中的截断数据

时间:2012-05-04 14:44:39

标签: lua msxml

我正在尝试从网站下载源代码文件,该文件适用于小文件,但是一些较大的文件会被截断。

下面的示例应返回146,135字节大小的文件,但返回141,194字节之一,状态为200.

我也尝试过winhttp.winhttprequest.5.1,但两者似乎都在同一时刻截断。

我也发现很多有类似问题的人,但是找不到解决办法。

require('luacom')

http = luacom.CreateObject('MSXML2.ServerXMLHTTP')

http:Open("GET","http://www.family-historian.co.uk/wp-content/plugins/forced-download2/download.php?path=/wp-content/uploads/formidable/tatewise/&file=Map-Life-Facts3.fh_lua&id=190",true)
http:Send()
http:WaitForResponse(30)
print('Status: '..http.Status)
print('----------------------------------------------------------------')
headers = http:GetAllResponseHeaders()
data = http.Responsetext 
print('Data Size = '..#data)
print('----------------------------------------------------------------')
print(headers)

1 个答案:

答案 0 :(得分:0)

我终于知道发生了什么,所以会把它发布给其他人。

为了避免截断我需要使用ResponseBody而不是ResponseText,似乎正在发生的是文件以二进制格式发送,ResponseText数据与ResponseBody数据的字节数相同,但是采用UTF- 8格式,这意味着如果文件中的特殊字符(UTF-8中的双字节从ResponseText的末尾删除),则表示数字。我不确定长度中的“错误”在什么级别,但是避免它的方法是使用ResponseBody。