void AddressValidationControl_VerifyAddressClicked(AddressValidationControl ucontrol) { ucontrol.useSuggested.CheckState = CheckState.Unchecked; _isErrorFromResponse = true; IContact contactRecord = _recordContext.GetWorkspaceRecord(RightNow.AddIns.Common.WorkspaceRecordType.Contact) as IContact; Address contactAddress = new Address(); try { if (contactRecord.AddrCountryID != 1) { string errorMsg = "Please--USA only postal address verification!"; ucontrol.addrValidResponseText.Text = errorMsg; ConfigurationSetting.logWrap.NoticeLog(0, contactRecord.ID, logMessage: errorMsg); return; } // get the contactRecord.Addrxxx contactAddress.Address2 = contactRecord.AddrStreet; contactAddress.City = contactRecord.AddrCity; if (contactRecord.AddrProvID != null) contactAddress.StateID = (int)contactRecord.AddrProvID; contactAddress.Zip = contactRecord.AddrPostalCode; _responseAddr = null; _responseAddr = ValidateAddress(contactAddress); string addressStg = _responseAddr.Address2 + ", " + _responseAddr.City + ", " + _responseAddr.State + " " + _responseAddr.Zip5 + "-" + _responseAddr.Zip4; ucontrol.addrValidResponseText.Text = "Address verified: " + addressStg; _isErrorFromResponse = false; ConfigurationSetting.logWrap.DebugLog(0, contactRecord.ID, logMessage: ucontrol.addrValidResponseText.Text); if (_responseAddr.ReturnText != null) { string sanitizeMsg = _responseAddr.ReturnText.Replace("Default address:", "Address verified:"); ucontrol.addrValidResponseText.Text = sanitizeMsg + " " + addressStg; } } catch (Exception e) { // log e.Message if (e.Message.Contains("Authorization failure") || e.Message.Contains("Username exceeds maximum length") || e.Message.Contains("Misconfiguration or some other invalid data received.")) ConfigurationSetting.logWrap.ErrorLog(0, contactRecord.ID, logMessage: e.Message); else ConfigurationSetting.logWrap.NoticeLog(0, contactRecord.ID, logMessage: e.Message); ucontrol.addrValidResponseText.Text = "Not valid: " + e.Message; _isErrorFromResponse = true; } }
public Address ValidateAddress(Address address) { try { WebClient web = new WebClient(); string validateUrl = "?API=Verify&XML=<AddressValidateRequest USERID=\"{0}\"><Address ID=\"{1}\"><Address1>{2}</Address1><Address2>{3}</Address2><City>{4}</City><State>{5}</State><Zip5>{6}</Zip5><Zip4>{7}</Zip4></Address></AddressValidateRequest>"; string url = _uspsURL + validateUrl; url = String.Format(url, _uspsUsername, address.ID.ToString(), address.Address1, address.Address2, address.City, address.State, address.Zip5, address.Zip4); string addressxml; try { addressxml = web.DownloadString(url); } catch (Exception ex) { string msg = "Misconfiguration or some other invalid data received."; throw new Exception(msg); } if (addressxml.Contains("<Error>")) { int idx1 = addressxml.IndexOf("<Description>") + 13; int idx2 = addressxml.IndexOf("</Description>"); int l = addressxml.Length; string errDesc = addressxml.Substring(idx1, idx2 - idx1); throw new Exception(errDesc); } return Address.getAddress(addressxml); } catch (Exception ex) { throw ex; } }
// Get an Address object from an xml response. public static Address getAddress(string xml) { Address a = new Address(); System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.LoadXml(xml); System.Xml.XmlNode element = doc.SelectSingleNode("/AddressValidateResponse/Address/Address1"); if (element != null) a._Address1 = element.InnerText; element = doc.SelectSingleNode("/AddressValidateResponse/Address/Address2"); if (element != null) a._Address2 = element.InnerText; element = doc.SelectSingleNode("/AddressValidateResponse/Address/City"); if (element != null) a._City = element.InnerText; element = doc.SelectSingleNode("/AddressValidateResponse/Address/State"); if (element != null) { a._State = element.InnerText; a.StateID = (int)_reverseStateTable[a._State]; } element = doc.SelectSingleNode("/AddressValidateResponse/Address/Zip5"); if (element != null) a._Zip5 = element.InnerText; element = doc.SelectSingleNode("/AddressValidateResponse/Address/Zip4"); if (element != null) a._Zip4 = element.InnerText; a.Zip = a.Zip5 + "-" + a.Zip4; if (a._Address1 != null && a._Address2 != null) a._Address2 += " " + a._Address1; element = doc.SelectSingleNode("/AddressValidateResponse/Address/ReturnText"); if (element != null) a.ReturnText = element.InnerText; return a; }