我正在使用他们的API从SagePay下载交易数据。调用的结果为我提供了一个XML字符串,然后我将其反序列化并存储在类中。
每次调用都会检索最多50条记录,我会在给定的datetime
范围内进行多次调用,直到检索到所有记录为止。这适用于前X次调用,但后来出现错误:
未处理的类型' System.InvalidOperationException'发生在System.Xml.dll
中其他信息:XML文档中存在错误(1,141)。
内部异常:{"对于无符号字节,值太大或太小。"}
XML document (1, 141).
中的值并不总是与每次尝试保持一致。如果我看看这个位置上的角色,我看不出任何错误。
在这个例子中,字符141是&#34; t&#34;在<totalrows>
:
<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><vspaccess><errorcode>0000</errorcode><transactions><startrow>251</startrow><endrow>300</endrow><totalrows>16684</totalrows>
251的<startrow>
表示在此错误之前已经有5次成功通话。
反序列化代码:
XmlSerializer serializer = new XmlSerializer(typeof(vspaccess));
StringReader rdr = new StringReader(xmlDoc.InnerXml);
vspaccess sageTransactions = (vspaccess)serializer.Deserialize(rdr);
vspaccess
是VS2013生成的类(特殊粘贴)
我错过了什么?
我显然无法发布所有XML,因为它是实时交易信息,但如果我错过了任何所需信息,请告诉我
答案 0 :(得分:5)
阅读错误。无符号字节最大大小为255 - 所以值300将是大的。
16684也将是大的。不要挂断错误报告的列号。查看错误消息以及您要加载的内容。