各位大侠大家好:
我是从服务器上下载xml并解析后执行到这句outlook.Contacts.Items.Add(contact);时出现这个Native method call failed.错误,我之前也曾经成功添加,但一段时间后就不行了,不知道是什么原因,请您帮我看一下,小弟在此先谢谢了!
private static void AnalyzeLoadContactXml()//通讯录下载
{
byte[] review = new byte[1024 * 1024];
string s = "";
int index = 0;
int errRead = 0;
string url = "phonebook_get.php?userid=" + Int32.Parse(MeraldRegistry.UserID) + "&password=" + MeraldRegistry.PassWord + "&encoding=&";
Cursor.Current = Cursors.WaitCursor;
errRead = WebServices.WebServicesReadXml(url, review);
if (errRead == 0)
{
XmlDocument xml = new XmlDocument();
xml.LoadXml(MeraldUtil.ByteArrayToString(review));
int count = int.Parse(xml.SelectSingleNode(".//count").InnerText);
for (int i = 1; i <= count; i++)
{
OutlookSession outlook = new OutlookSession();
Contact contact = new Contact();
s = xml.SelectSingleNode(".//pl" + i).InnerText;
//index = s.IndexOf("|");
//contact.LastName = s.Substring(0, index);
//s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.FirstName = s.Substring(0, index);
//contact.FirstName = "";
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.MobileTelephoneNumber = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.RadioTelephoneNumber = s.Substring(0, index);
//s = s.Substring(index + 1);
//index = s.IndexOf("|");
//contact.HomeAddressState = s.Substring(0, index);
//s = s.Substring(index + 1);
//index = s.IndexOf("|");
//contact.HomeAddressCity = s.Substring(0, index);
////contact.HomeAddressCity = "";
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.HomeAddressStreet = s.Substring(0, index);
//contact.HomeAddressStreet = "";
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.HomeTelephoneNumber = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.CompanyName = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.Department = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.JobTitle = s.Substring(0, index);
//s = s.Substring(index + 1);
//index = s.IndexOf("|");
//contact.BusinessAddressState = s.Substring(0, index);
//s = s.Substring(index + 1);
//index = s.IndexOf("|");
//contact.BusinessAddressCity = s.Substring(0, index);
////contact.BusinessAddressCity = "";
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.BusinessAddressStreet = s.Substring(0, index);
//contact.BusinessAddressStreet =
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.BusinessTelephoneNumber = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.Email1Address = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.Email2Address = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
//contact.WebPage = s.Substring(0, index);
string y = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
int indexTime = 0;
string str = s.Substring(0, index);
indexTime = str.IndexOf("-");
int d1 = Convert.ToInt32(str.Substring(0, indexTime));
str = str.Substring(indexTime + 1);
indexTime = str.IndexOf("-");
int d2 = Convert.ToInt32(str.Substring(0, indexTime));
int d3 = Convert.ToInt32(str.Substring(indexTime + 1));
contact.Birthday = new DateTime(d1, d2, d3);
//y = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.BusinessFaxNumber = s.Substring(0, index);
s = s.Substring(index + 1);
index = s.IndexOf("|");
contact.HomeFaxNumber = s.Substring(0, index);
s = s.Substring(index + 1);
contact.Body = s;
outlook.Contacts.Items.Add(contact);
contact.Update();
}
Cursor.Current = Cursors.Default;
}
xml内容如下
<?xml version="1.0" encoding="ISO-8859-1"?><mlist><count>4</count><pl1>黄婷南宁号|+8615177049722||||||||||||1601-1-1|||</pl1><pl2>农翠兰|+8613977666249||||||||||||1601-1-1|||</pl2><pl3>小农|13755426392|13522436985|中国北京海淀区西三旗|(010) 6666666|Merad|软件|乞丐|中国广西百色旧州大街|(010) 82839651|bb@163.com|a@123.com||2009-1-18|(010) 88888888|(010) 12356|明天会更好
</pl3><pl4>枝|||||||||15078685173||||1601-1-1|||</pl4></mlist>