2008-09-23 6 views

Répondre

9

Si vous avez seulement besoin d'informations américaines, le US Postal Service propose un ensemble de services Web appelés WebTools pour cela. https://www.usps.com/business/web-tools-apis/welcome.htm. Vous devrez vous inscrire pour pouvoir les utiliser, mais une fois que vous êtes enregistré, ils sont vraiment simples à utiliser. Vous venez d'envoyer une requête XML via HTTP et le serveur envoie une réponse XML et vous n'avez plus qu'à la décompresser.

Demande d'échantillon:

http://SERVERNAME/ShippingAPITest.dll?API=Verify&XML=<AddressValidateRequest%20USERID="xxxxxxx"><Address ID="0"><Address1></Address1><Address2>6406 Ivy Lane</Address2><City>Greenbelt</City><State>MD</State><Zip5></Zip5><Zip4></Zip4></Address></AddressValidateRequest> 

Exemple de réponse:

<?xml version="1.0"?> 
<AddressValidateResponse> 
    <Address ID="0"> 
     <Address2>6406 IVY LN</Address2> 
     <City>GREENBELT</City> 
     <State>MD</State> 
     <Zip5>20770</Zip5> 
     <Zip4>1441</Zip4> 
    </Address> 
</AddressValidateResponse> 

Voici un lien vers la documentation technique: https://www.usps.com/business/web-tools-apis/documentation-updates.htm

+0

Ce lien n'est plus disponible, est affiché le fichier ou la page demandée non trouvée –

1

Une bonne source de données géographiques, y compris les recherches et les données de cartographie pour les États-Unis est TIGER Data set du Bureau du recensement des États-Unis. Ils ne suivent plus activement les données du code postal, mais ils ont toujours un 1999 vintage file disponible.

Pour les pays, la liste des codes de pays ISO est disponible au public.

Je ne suis pas au courant des ressources pour l'information en dehors des États-Unis.

14

http://www.geonames.org/

C'est le meilleur que je l'ai trouvé. Ils vous permettent de télécharger et d'héberger vous-même le service Web, ce qui est également agréable.

2

Un service qui fonctionne bien avec .Net (car il utilise WSDL) est http://www.webservicex.net. Ils ont un service pour les codes postaux américains disponibles au http://www.webservicex.net/uszip.asmx. Vous pouvez simplement l'ajouter en tant que service et Visual Studio s'occupera du reste. La réponse est une réponse XML, vous devrez donc l'analyser, mais vous pouvez utiliser quelque chose de simple comme USZIP.GetInfoByZIP(ZIP).SelectSingleNode("//STATE").InnerText.

Pour mon application, j'ai ensuite construit un cache en mémoire des données en utilisant XML en suivant ces instructions: http://www.15seconds.com/issue/010410.htm. J'ai utilisé XML au lieu d'un HashTable ou Dictionary(TKey, TValue) parce que je voulais être en mesure de le sérialiser en une chaîne afin que je puisse enregistrer la 'base de données' comme paramètre utilisateur.