code: public ViaCEPEndereco getEndereco(String cep) throws IOException {
  		char[] chars = cep.toCharArray();
  		
  		StringBuilder builder = new StringBuilder();
  		for (int i = 0; i< chars.length; i++){
  			if (Character.isDigit(chars[i])){
  				builder.append(chars[i]);
  			}
  		}
  		cep = builder.toString();
  		
  		if (cep.length() != 8){
  			throw new IllegalArgumentException("CEP inválido - deve conter 8 dígitos: " + cep);
  		}
  		
  		String urlString = getHost() + cep + "/json/";
  		URL url = new URL(urlString);
  		HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
  		try {
  			InputStream in = new BufferedInputStream(urlConnection.getInputStream());
  			ViaCEPEndereco obj = getService().beanFrom(ViaCEPEndereco.class, in);
  			if (obj == null || obj.getCep() == null){
  				return null;
  			}
  			return obj;
  		}
  		finally {
  			urlConnection.disconnect();
  		}
  	}
docs: Executa a consulta de endereço a partir de um CEP.
  
  @param cep CEP da localidade onde se quer consultar o endereço. Precisa ter 8 dígitos - a formatação é feita pelo cliente.
  CEPs válidos (que contém 8 dígitos): "20930-040", "abc0 1311000xy z", "20930 040". CEPs inválidos (que não contém 8 dígitos): "00000", "abc", "123456789"
  
  @return O endereço encontrado para o CEP, ou <code>null</code> caso não tenha sido encontrado.
  @throws IOException em casos de erro de conexão.
  @throws IllegalArgumentException para CEPs que não possuam 8 dígitos.