Olá, pessoal! Tudo beleza?
Estou com um probleminha…
Já fiz esse processo que vou explicar várias vezes, mas se vale de informação todas as vezes foi através de um webservice criado em java pelo eclipse ou netbeans e gerado um cliente da mesma forma através do wsdl que é um padrão. Funcionaria em qualquer linguagem que tentar criar um cliente para tal.
Já tentei de várias formas e nenhuma funcionou. Vou explicar aqui duas formas e o erro apresentado.
1-
Tenho um webservice gerado por uma empresa de fora (criado através de uma IDE Delphi 7) rodando em um servidor aqui da empresa.
Capturei o wsdl e tentei gerar o cliente com o WSD2Java do Eclipse (usando axis) e me apresenta o seguinte erro:
Segue a imagem printada do erro em anexo “Erro Gerando Cliente 01”
IWAB0399E Error in generating Java from WSDL: WSDLException (at /definitions/binding/operation/input): faultCode=INVALID_WSDL: Element '{http://schemas.xmlsoap.org/wsdl/}input' contained unexpected attributes: 'message':
Pela mensagem apresentada seria um erro de validação do schema do wsdl, ou seja, algo na formação do wsdl estaria errado. Pelo menos foi essa a análise que fiz.
Mas fizemos um teste pegando esse mesmo wsdl e gerando um cliente no delphi 7 e funcionou corretamente. Então minha suposição anterior estaria “descartada”.
2-
Tentei também de uma outra forma. Quase que na mão.
Como segue no código abaixo:
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/**
*
*/
/**
* @author rafael
*
*/
public class TesteClienteWSURL {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String id="01";
String nome="Rafael";
String nasc="09/12/1984";
String sexo="M";
String doc="1159506809";
String tel="3333-3333";
String cel="8888-8888";
String conv="0102225484564";
String mat="6082";
String temp="";
try {
String wsURL = "http://server-call/webcliente/WebAgenda.dll/wsdl/IWebagenda?wsdl";
Object[] params = { id, nome, nasc, sexo, doc, tel, cel, conv, mat, temp};
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(wsURL);
call.setOperationName("ReceberCliente");
String ret = (String) call.invoke(params);
System.out.println("Resultado: " +ret);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
e.printStackTrace();
}
}
Mas, no momento de fazer o String ret = (String) call.invoke(params);
ele cai em uma exception do tipo :
nested exception is:
org.xml.sax.SAXException: Bad envelope tag: definitions
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXException: Bad envelope tag: definitions
faultActor:
faultNode:
faultDetail:
Em anexo seguem mais arquivos:
-Erro Gerando Cliente 01
-Classe para fazer o teste do cliente na mão
-Toda a Excecao Gerada
Se alguem souber a falha que estou comentendo e puder me informar para que eu possa corrigir ficarei muito agradecido. Pois, não estou conseguindo entender esse erro.
UM ABRAÇO A TODOS.
E BOA SORTE.
RAFAEL MARTINS