1

目前我正在开发一个应用程序,通过谷歌联系人 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);

我只有在向联系人添加新电子邮件地址时才会遇到这个问题。电话、地址等都可以完美运行.. 但不是邮件。

现在我没有任何线索如何解决这个问题。可能有人可以帮助我解决这个问题。如果您需要更多信息,请告诉我,我会发布。

提前致谢..

4

0 回答 0