目前我正在开发一个应用程序,通过谷歌联系人 api 添加和更新联系人。
到目前为止它工作正常,但我在更新过程中遇到问题..
我的工作流程是这样的:
获取特定联系人,编辑/添加一些属性,并将其更新到 google..
但是当我尝试向联系人添加新的电子邮件地址时,我收到“远程服务器返回错误:(400) 错误请求”。返回错误。内部异常为空。
ContactsRequest cr = new ContactsRequest(new RequestSettings(CStr.Caption, new GDataCredentials(Username, Password)));
Contact newEntry = new Contact();
//retrieve original contact
// First, retrieve the contact to update.
Contact contact = cr.Retrieve<Contact>(new Uri(GoogleTargetId));
//check each field like phone, mail, address, etc.
foreach(CollisionField field in list)
{
switch(field.collisionField)
{
case CollisionFieldEnum.Mail:
//Should this field be synced?
if (field.Sync)
{
try
{
//may be there is already an existing email address?
EMail e = contact.Emails.FirstOrDefault(
x => x.Value == GoogleOrig.Mail);
if (e != null)
e.Value = SourceContact.Mail;
else
{
//no email found, so add a new one
e = new EMail()
{
Primary = true,
Value = SourceContact.Mail,
Rel = ContactsRelationships.IsHome
};
//add this email to the collection
contact.Emails.Add(e);
}
field.Synced = true;
}
catch(Exception ex)
{
CMisc.AttachToLog("Cannot update Google Contact field: " + field.collisionField.ToString() + "; " + ex.ToString());
field.Synced = false;
}
}
break;
//some more fields like phone, mobile, address, etc...
default:
break;
到目前为止没有问题...
当我想提交更改时,我在这里得到了例外:
Contact updatedC = cr.Update(contact);
我只有在向联系人添加新电子邮件地址时才会遇到这个问题。电话、地址等都可以完美运行.. 但不是邮件。
现在我没有任何线索如何解决这个问题。可能有人可以帮助我解决这个问题。如果您需要更多信息,请告诉我,我会发布。
提前致谢..