Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MSXML2.ServerXMLHTTP从网页访问数据将返回Lua中的截断数据_Lua_Msxml - Fatal编程技术网

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

使用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:

我正试图从一个网站下载一个源代码文件,它可以很好地处理小文件,但有几个较大的文件会被截断

下面的示例应返回146135字节大小的文件,但返回状态为200的141194字节之一

我也尝试过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)

我终于弄明白发生了什么,所以我会把它贴在这里给其他人看

为了避免使用ResponseBody而不是ResponseText所需的截断,出现的情况是文件以二进制格式发送,ResponseText数据的字节数与ResponseBody数据的字节数相同,但为UTF-8格式,这意味着如果文件中的特殊字符(UTF-8中的双字节)从ResponseText的末尾删除,则为数字。我不确定长度上的错误是在什么程度上犯的,但避免错误的方法是使用ResponseBook