Good morning, guys!
I have a zip code finder that is no longer working. When I use the URL passing my zip code it returns the query. Thank you in advance for the help!
Here's a sample link to test the direct query in the browser. Here is the result:
<webservicecep>
<resultado>1</resultado>
<resultado_txt>sucesso - cep completo</resultado_txt>
<uf>SP</uf>
<cidade>Marília</cidade>
<bairro>Vila Romana</bairro>
<tipo_logradouro>Rua</tipo_logradouro>
<logradouro>Antônio Pinheiro Faro</logradouro>
</webservicecep>
public void encontraCEP() {
CepWebService cepWebService = new CepWebService(cliente.getCep());
if (cepWebService.getResultado() == 1) {
cliente.setLogradouro(cepWebService.getLogradouro());
cliente.setUf(cepWebService.getEstado());
cliente.setCidade(cepWebService.getCidade());
cliente.setBairro(cepWebService.getBairro());
// cliente.setTipoEndereco(cepWebService.getTipoLogradouro());
} else {
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Cep não encontraro ou erro no servidor",
"Digite os dados manualmente"));
}
}
public class CepWebService {
private String estado = "";
private String cidade = "";
private String bairro = "";
private String tipoLogradouro = "";
private String logradouro = "";
private int resultado = 0;
@SuppressWarnings("rawtypes")
public CepWebService(String cep) {
try {
URL url = new URL(
"http://cep.republicavirtual.com.br/web_cep.php?cep=" + cep
+ "&formato=xml");
Document document = getDocumento(url);
Element root = document.getRootElement();
for (Iterator i = root.elementIterator(); i.hasNext();) {
Element element = (Element) i.next();
if (element.getQualifiedName().equals("uf"))
setEstado(element.getText());
if (element.getQualifiedName().equals("cidade"))
setCidade(element.getText());
if (element.getQualifiedName().equals("bairro"))
setBairro(element.getText());
if (element.getQualifiedName().equals("tipo_logradouro"))
setTipoLogradouro(element.getText());
if (element.getQualifiedName().equals("logradouro"))
setLogradouro(element.getText());
if (element.getQualifiedName().equals("resultado"))
setResultado(Integer.parseInt(element.getText()));
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Document getDocumento(URL url) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(url);
return document;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getTipoLogradouro() {
return tipoLogradouro;
}
public void setTipoLogradouro(String tipoLogradouro) {
this.tipoLogradouro = tipoLogradouro;
}
public String getLogradouro() {
return logradouro;
}
public void setLogradouro(String logradouro) {
this.logradouro = logradouro;
}
public int getResultado() {
return resultado;
}
public void setResultado(int resultado) {
this.resultado = resultado;
}
}
I did the following test. I passed the zip directly to test and it is returning result in debug.
public void encontraCEP() {
CepWebService cepWebService = new CepWebService("17522350");
if (cepWebService.getResultado() == 1) {
cliente.setLogradouro(cepWebService.getLogradouro());
cliente.setUf(cepWebService.getEstado());
cliente.setCidade(cepWebService.getCidade());
cliente.setBairro(cepWebService.getBairro());
//cliente.setTipoEndereco(cepWebService.getTipoLogradouro());
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Cep não encontraro ou erro no servidor",
"Digite os dados manualmente"));
}
}
MyCommandButton
issendingnull
tothemethod:
<p:outputLabel for="cep" value="CEP" />
<h:panelGroup>
<p:inputMask id="cep" mask="99999-999" size="9"
value="#{cadastroClienteBean.cliente.cep}" />
<p:commandButton value="Buscar Endereço" style=" color: #D20005" >
<f:ajax listener="#{cadastroClienteBean.encontraCEP}" render="@form"
event="click" />
</p:commandButton>
</h:panelGroup>