使用MSXML2.ServerXMLHTTP从网页访问数据将返回Lua中的截断数据
我正试图从一个网站下载一个源代码文件,它可以很好地处理小文件,但有几个较大的文件会被截断 下面的示例应返回146135字节大小的文件,但返回状态为200的141194字节之一 我也尝试过winhttp.winhttprequest.5.1,但两者似乎在同一点截断 我还发现有不少人有类似的问题,但没有找到解决办法使用MSXML2.ServerXMLHTTP从网页访问数据将返回Lua中的截断数据,lua,msxml,Lua,Msxml,我正试图从一个网站下载一个源代码文件,它可以很好地处理小文件,但有几个较大的文件会被截断 下面的示例应返回146135字节大小的文件,但返回状态为200的141194字节之一 我也尝试过winhttp.winhttprequest.5.1,但两者似乎在同一点截断 我还发现有不少人有类似的问题,但没有找到解决办法 require('luacom') http = luacom.CreateObject('MSXML2.ServerXMLHTTP') http:Open("GET","http:
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)
我终于弄明白发生了什么,所以我会把它贴在这里给其他人看 为了避免使用ResponseBody而不是ResponseText所需的截断,出现的情况是文件以二进制格式发送,ResponseText数据的字节数与ResponseBody数据的字节数相同,但为UTF-8格式,这意味着如果文件中的特殊字符(UTF-8中的双字节)从ResponseText的末尾删除,则为数字。我不确定长度上的错误是在什么程度上犯的,但避免错误的方法是使用ResponseBook