Criei um SOAP em java e estou tentando consumi-lo em C#, porem não está dando erro…
Erro
Caused by: javax.xml.bind.UnmarshalException: elemento inesperado (uri:"http://Ws.wsFINGER.com.br/", local:"Pais"). Os elementos esperados são <{}pais>
... 58 more
Java ----
Classe ws
@Stateless
@WebService
public class wsPais {
private DAO<Pais> dao = new DAO<Pais>(Pais.class);
@WebMethod(operationName = "Salvar")
public String Salvar(@WebParam(name = "pais") Pais pais) {
dao.salva(pais);
pais = new Pais();
return "Ok";
}
}
Classe Pais
@XmlRootElement(name = "Pais")
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
public class Pais {
// Fields
@Id
@GeneratedValue
private Long id;
private String nome;
private String sigla;
private String nacionalidade;
@Type(type = "true_false")
private boolean status;
public Pais() {
super();
}
public Pais(Long id, String nome, String sigla, String nacionalidade, List<Estado> estados, boolean status) {
super();
this.id = id;
this.nome = nome;
this.sigla = sigla;
this.nacionalidade = nacionalidade;
this.status = status;
this.estados = estados;
}
public Pais(Long id, String nome, String sigla, String nacionalidade, boolean status) {
super();
this.id = id;
this.nome = nome;
this.sigla = sigla;
this.nacionalidade = nacionalidade;
this.status = status;
}
@XmlTransient
@OneToMany(mappedBy = "pais", fetch = FetchType.LAZY)
// @Where(clause = "status='T'")
private List<Estado> estados;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSigla() {
return sigla;
}
public void setSigla(String sigla) {
this.sigla = sigla;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public List<Estado> getEstados() {
return estados;
}
public void setEstados(List<Estado> estados) {
this.estados = estados;
}
public String getNacionalidade() {
return nacionalidade;
}
public void setNacionalidade(String nacionalidade) {
this.nacionalidade = nacionalidade;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((nacionalidade == null) ? 0 : nacionalidade.hashCode());
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
result = prime * result + ((sigla == null) ? 0 : sigla.hashCode());
result = prime * result + (status ? 1231 : 1237);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pais other = (Pais) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (nacionalidade == null) {
if (other.nacionalidade != null)
return false;
} else if (!nacionalidade.equals(other.nacionalidade))
return false;
if (nome == null) {
if (other.nome != null)
return false;
} else if (!nome.equals(other.nome))
return false;
if (sigla == null) {
if (other.sigla != null)
return false;
} else if (!sigla.equals(other.sigla))
return false;
if (status != other.status)
return false;
return true;
}
@Override
public String toString() {
return nome;
}
}
agora consumindo em C#
protected void bntAdicionar_Click(object sender, EventArgs e)
{
wsPais.wsPaisClient wsPaisCli = new wsPais.wsPaisClient();
wsPais.pais pais = new wsPais.pais();
pais.nome = txtNome.Text;
pais.nacionalidade = txtNacionalidade.Text;
pais.sigla = txtSigla.Text;
pais.status = true;
pais.id = 1L;
string retorno = wsPaisCli.Salvar(pais);
}