////////////////////////////////////////////////////////////////////////// // FromXML medthod provided by viperguynaz via codeproject ////////////////////////////////////////////////////////////////////////// /// <summary> /// Get an Address object from an xml string. /// </summary> /// <param name="xml">XML representation of an Address Object</param> /// <returns>Address object</returns> public static Address FromXml(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/FirmName"); if (element != null) a._FirmName = element.InnerText; 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; element = doc.SelectSingleNode("/AddressValidateResponse/Address/Zip5"); if (element != null) a._Zip = element.InnerText; element = doc.SelectSingleNode("/AddressValidateResponse/Address/Zip4"); if (element != null) a._ZipPlus4 = element.InnerText; return a; }
/// <summary> /// Validate a single address /// </summary> /// <param name="address">Address object to be validated</param> /// <returns>Validated Address</returns> public Address ValidateAddress(Address address) { try { 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 = GetURL() + validateUrl; url = String.Format(url, _userid, address.ID.ToString(), address.Address1, address.Address2, address.City, address.State, address.Zip, address.ZipPlus4); string addressxml = web.DownloadString(url); 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 USPSManagerException(errDesc); } return Address.FromXml(addressxml); } catch(WebException ex) { throw new USPSManagerException(ex); } }
/// <summary> /// Get the zip code by providing an Address object with a city and state /// </summary> /// <param name="city">City</param> /// <param name="state">State</param> public Address GetZipcode(string city, string state) { Address a = new Address(); a.City = city; a.State = state; return GetZipcode(a); }
/// <summary> /// Get the city and state by proving the zip code. /// </summary> /// <param name="address">Address object</param> /// <returns>Address Object</returns> public Address GetCityState(Address address) { try { //The address must contain a city and state if (address.Zip == null || address.Zip.Length < 1) throw new USPSManagerException("You must supply a zipcode for a city/state lookup request."); string citystateurl = "?API=CityStateLookup&XML=<CityStateLookupRequest USERID=\"{0}\"><ZipCode ID= \"{1}\"><Zip5>{2}</Zip5></ZipCode></CityStateLookupRequest>"; string url = GetURL() + citystateurl; url = String.Format(url, _userid, address.ID.ToString(), address.Zip); string addressxml = web.DownloadString(url); 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 USPSManagerException(errDesc); } return Address.FromXml(addressxml); } catch (WebException ex) { throw new USPSManagerException(ex); } }
/// <summary> /// Get the city and state by proving the zip code. /// </summary> /// <param name="zipcode">Zipcode</param> public Address GetCityState(string zipcode) { Address a = new Address(); a.Zip = zipcode; return GetCityState(a); }
/// <summary> /// Get the zip code by providing an Address object with a city and state /// </summary> /// <param name="address">Address Object</param> /// <returns>Address Object</returns> public Address GetZipcode(Address address) { try { //The address must contain a city and state if (address.City == null || address.City.Length < 1 || address.State == null || address.State.Length < 1) throw new USPSManagerException("You must supply a city and state for a zipcode lookup request."); string zipcodeurl = "?API=ZipCodeLookup&XML=<ZipCodeLookupRequest USERID=\"{0}\"><Address ID=\"{1}\"><Address1>{2}</Address1><Address2>{3}</Address2><City>{4}</City><State>{5}</State></Address></ZipCodeLookupRequest>"; string url = GetURL() + zipcodeurl; url = String.Format(url, _userid, address.ID.ToString(), address.Address1, address.Address2, address.City, address.State, address.Zip, address.ZipPlus4); string addressxml = web.DownloadString(url); 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 USPSManagerException(errDesc); } return Address.FromXml(addressxml); } catch (WebException ex) { throw new USPSManagerException(ex); } }