Ola galera
Sou novato no desenvolvimento WEB e estou com um pequeno problema
criei um Webservice em Java com apenas um método para teste que soma dois valore recebidos por parâmetros da requisição. segue ele:
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
@WebService(serviceName = "WSProtocolo")
public class WSProtocolo {
@WebMethod(operationName = "soma")
public Integer soma(@WebParam(name = "x") Integer x, @WebParam(name = "y") Integer y) {
System.out.println("Funcionou");
return x + y;
}
}
e Aqui o Ajax que faz a requisição:
$.ajax({
type: "POST",
url: "WSProtocolo?wsdl/soma",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
data: JSON.stringify({parametro1: 25, parametro2: 5}),
success: function (data) {
alert(data + ", Sucesso!");
}
});
no Debug do chrome ele só retorna o erro 415 (Unsupported Media Type)
alguém saberia me dizer oque está errado?
Acredito que esse erro seja pq você está tentando acessar um ws soap (JAX-WS) e não ws rest (JAX-RS). E, pesquisando aqui, parece que tem q fazer umas coisas para fazer funcionar.
Veja: https://stackoverflow.com/a/2766156
Como nunca precisei acessar um ws soap via ajax, não sei exatamente como fazer para funcionar.
1 curtida
Webservices baseados em SOAP tem um padrão de acesso diferente de webservices REST. No caso, você precisa elaborar um envelope ao qual é composto de elementos obrigatórios e opcionais. Os obrigatórios são header e body, que represente o payload da mensagem.
No seu caso, vc avisa que vai consumir a operação soma do contrato wsdl, mas não especifica o payload correto no formato supracitado.
Um exemplo de envelope seria:
<SOAP-ENV:envelope>
<!— Elemento raiz do SOAP e define que essa é uma mensagem SOAP–>
<SOAP-ENV:header>
<!—Especifica informações especificas como autenticação (opcional)–>
</SOAP-ENV:header>
<SOAP-ENV:body>
<!—O elemento BODY contém o corpo da mensagem–>
<SOAP-ENV:fault>
<!—O elemento FAULT contém os erros que podem ocorrer–>
</SOAP-ENV:fault>
</SOAP-ENV:body>
</SOAP-ENV:envelope>
1 curtida