我有一个服务器,并下载到客户端上我Gzip已使用WebClient类的字符串。 当我尝试解压缩,我得到的是缺少一个神奇的数字错误消息。 我曾经尝试都将GZipStream类和解决这个的ICSharpLib方法,所以我无所适从。
压缩/解压缩工作,如果我省略通过(使用DownloadData它返回该数据作为字节[])Web客户端下载的步骤,所以我只能假设有一些问题与所述数据获取截短或损坏了一些如何,但由于它的压缩数据,我不知道如何调试这一点。
下面是这似乎是有问题的部分代码片段:
byte[] response
try {
response = client.DownloadData(Constants.GetSetting("SyncServer"));
} catch {
MessageBox.Show("There was a problem synchronizing the data. Please try verify the supplied credentials or try again later.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
int rows = SQLiteAPI.ImportStatHistoryXML(CurrentUser.User, myCampus, Convert.ToBase64String(response));
public static int ImportStatHistoryXML(Person tempPerson, Campus tempCampus, string xmlFile) {
byte[] encryptedFile = Convert.FromBase64String(xmlFile);
MemoryStream memStream = new MemoryStream(encryptedFile);
memStream.ReadByte();
GZipInputStream stream = new GZipInputStream(memStream);
MemoryStream memory = new MemoryStream();
byte[] writeData = new byte[4096];
int size;
while (true) {
size = stream.Read(writeData, 0, writeData.Length);
if (size > 0) {
memory.Write(writeData, 0, size);
} else {
break;
}
}
stream.Close();
memory.Position = 0;
StreamReader sr = new StreamReader(memory);
string decompressed = sr.ReadToEnd();
DataSet tempSet = new DataSet();
StringReader xmlReader = new StringReader(decompressed);
tempSet.ReadXml(xmlReader);
DataTable statTable = tempSet.Tables["Stats"];
...more unrelated processing of the table
}
任何帮助,将不胜感激。 PS我使用的Base64编码字符串能够通过来回整个网络。 这实际上可能是我的,因为我没有做一个桌面应用程序和之前的Web服务之间的Web请求和响应搞乱的区域。