Return to Snippet

Revision: 38234
at December 29, 2010 08:48 by RhinoX64


Initial Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Web.Configuration;
using System.Collections.Specialized;
using System.Xml.Linq;
using System.IO;


    public static class AddressProvider
    {
        public static Address StandardizeAddress(Address address)
        {
            Address addr = new Address();
            try
            {
                //Prepare Request
                WebClient client = new WebClient();
                client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
                string advserver = "http://production.shippingapis.com/ShippingAPI.dll";
                string advuserid = // YOU USER ID HERE
                Uri wa = new Uri(advserver);

                NameValueCollection nvc = new NameValueCollection();


                XElement add = new XElement("Address");
                add.SetAttributeValue("ID", "0");

                XElement firmname = new XElement("FirmName", string.Empty);
                add.Add(firmname);

                XElement ad1 = new XElement("Address1", address.Street2);
                add.Add(ad1);

                XElement ad2 = new XElement("Address2", address.Street1);
                add.Add(ad2);

                XElement city = new XElement("City", address.City);
                add.Add(city);

                XElement state = new XElement("State", address.State);
                add.Add(state);

                XElement zip5 = new XElement("Zip5", address.Zip);
                add.Add(zip5);

                XElement zip4 = new XElement("Zip4", string.Empty);
                add.Add(zip4);


                XElement root = new XElement("AddressValidateRequest");
                root.SetAttributeValue("USERID", advuserid);
                root.Add(add);

                nvc.Add("API", "Verify");
                nvc.Add("XML", root.ToString());

                byte[] data = client.UploadValues(wa, nvc);
                MemoryStream ms = new MemoryStream(data);
                StreamReader reader = new StreamReader(ms);
                string s = reader.ReadToEnd();
                //Process Response

                XElement response = XElement.Parse(s, LoadOptions.None);
                IEnumerable<XElement> error = response.Descendants("Error");

                if (error.Count() <= 0)
                {
                    XElement xad = response.Element("Address");
                    if (xad != null)
                    {
                        if (xad.Element("Address1") != null)
                        {
                            addr.Street2 = xad.Element("Address1").Value;
                        }
                        else
                        {
                            addr.Street2 = string.Empty;
                        }
                        if (xad.Element("Address2") != null)
                        {
                            addr.Street1 = xad.Element("Address2").Value;
                        }
                        else
                        {
                            addr.Street1 = string.Empty;
                        }
                        if (xad.Element("City") != null)
                        {
                            addr.City = xad.Element("City").Value;
                        }
                        else
                        {
                            addr.City = string.Empty;
                        }
                        if (xad.Element("State") != null)
                        {
                            addr.State = xad.Element("State").Value;
                        }
                        else
                        {
                            addr.State = string.Empty;
                        }
                        if (xad.Element("Zip5") != null)
                        {
                            addr.Zip = xad.Element("Zip5").Value;
                        }
                        else
                        {
                            addr.Zip = string.Empty;
                        }

                    }
                }
                else
                {
                    return null;
                }
            }
            catch
            {

            }

            return addr;
        }

    public class Address
    {
        public string Street1 { get; set; }
        public string Street2 { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Zip { get; set; }
    }

}

Initial URL


Initial Description
requires you to register with USPS.
method requires your USPS API key.

Initial Title
USPS Address Correction

Initial Tags
validation

Initial Language
C#