Hi
The geonames webserives follow the lightweight REST principle and you don't need a SOAP library to access it.
A simple java program will do the job : (with jdom.org for the xml parsing)
Code:
public static List<PostalCode> postalCodeSearch(String postalCode,
String placeName, String countryCode) throws Exception {
List<PostalCode> postalCodes = new ArrayList<PostalCode>();
String url = "http://ws.geonames.org/postalCodeSearch?";
if (postalCode != null) {
url = url + "postalcode=" + postalCode;
}
if (placeName != null) {
if (!url.endsWith("&")) {
url = url + "&";
}
url = url + "placename=" + URLEncoder.encode(placeName, "UTF8");
}
if (countryCode != null) {
if (!url.endsWith("&")) {
url = url + "&";
}
url = url + "country=" + countryCode;
}
URLConnection conn = new URL(url).openConnection();
conn.setRequestProperty("User-Agent", USER_AGENT);
SAXBuilder parser = new SAXBuilder();
Document doc = parser.build(conn.getInputStream());
Element root = doc.getRootElement();
for (Object obj : root.getChildren("code")) {
Element codeElement = (Element) obj;
PostalCode code = new PostalCode();
code.setPostalCode(codeElement.getChildText("postalcode"));
code.setPlaceName(codeElement.getChildText("name"));
code.setCountryCode(codeElement.getChildText("countryCode"));
code.setLatitude(Double
.parseDouble(codeElement.getChildText("lat")));
code.setLongitude(Double.parseDouble(codeElement
.getChildText("lng")));
postalCodes.add(code);
}
return postalCodes;
}