Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Delphi para la web
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Error "Message part {URL}Método was not recognized" al consumir servicio Web Java

Hola a todos.

Los servicios Web (Web services) es una de las muchas áreas en las que me declaro novato.

Para concluir cierta aplicación que me han encargado, me falta que ésta envíe ciertos datos a través de un servicio Web. Para esta parte opté por usar Delphi XE2, dado que su importador de archivos WSDL está más actualizado que el de Delphi 7.

Cuando trato de consumir el servicio Web, es decir, cuando intento llamar a uno de sus métodos, obtengo como respuesta una excepción de clase ERemotableException, cuyo mensaje es:

Message part {URL}Método was not recognized. (Does it exist in service WSDL?)

Donde URL es la URL del espacio de nombres indicado por el WSDL, y Método es el nombre del método que se intentó llamar.

La importación parece ocurrir correctamente, se genera un archivo .pas con todas las clases, métodos y funciones que definen al servicio Web, el método se importa con el mismo nombre que aparece en varios de los nodos del WSDL. Pero la llamada no se realiza.

Usando la aplicación de diagnóstico SoapUI, al lanzar la petición (request) tampoco se consigue ejecutar la llamada, aunque el error es diferente:

ERROR [WsdlSubmit] Exception in request: java.net.UnknownHostException: lpmx2xxxxx.xxm.na.xxg

Observando el archivo .log de esta herramienta, pude notar que el servicio Web está hecho en Java y es proporcionado mediante el servidor Apache.

El WSDL completo es:
Código:
<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions name="WSManagementxxxxerPointService" targetNamespace="http://www.xx.com.mx/xxxxportal/xxxxerPoint" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.xx.com.mx/xxxxportal/xxxxerPoint" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types>
    <xs:schema elementFormDefault="unqualified" targetNamespace="http://www.xx.com.mx/xxxxportal/xxxxerPoint" version="1.0" xmlns:tns="http://www.xx.com.mx/xxxxportal/xxxxerPoint" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="UploadFile" type="tns:UploadFile" />
      <xs:element name="UploadFileResponse" type="tns:UploadFileResponse" />
      <xs:complexType name="UploadFile">
        <xs:sequence>
          <xs:element minOccurs="0" name="arg0" type="xs:string" />
          <xs:element minOccurs="0" name="arg1" type="xs:string" />
          <xs:element minOccurs="0" name="arg2" type="xs:string" />
          <xs:element minOccurs="0" name="arg3" type="xs:string" />
          <xs:element minOccurs="0" name="arg4" type="xs:string" />
          <xs:element name="arg5" type="xs:int" />
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="UploadFileResponse">
        <xs:sequence>
          <xs:element name="return" type="xs:boolean" />
        </xs:sequence>
      </xs:complexType>
    </xs:schema>
  </wsdl:types>
  <wsdl:message name="UploadFile">
    <wsdl:part element="tns:UploadFile" name="parameters" />
  </wsdl:message>
  <wsdl:message name="UploadFileResponse">
    <wsdl:part element="tns:UploadFileResponse" name="parameters" />
  </wsdl:message>
  <wsdl:portType name="WSManagamentxxxxerPoint">
    <wsdl:operation name="UploadFile">
      <wsdl:input message="tns:UploadFile" name="UploadFile" />
      <wsdl:output message="tns:UploadFileResponse" name="UploadFileResponse" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="WSManagementxxxxerPointServiceSoapBinding" type="tns:WSManagamentxxxxerPoint">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="UploadFile">
      <soap:operation soapAction="" style="document" />
      <wsdl:input name="UploadFile">
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="UploadFileResponse">
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="WSManagementxxxxerPointService">
    <wsdl:port binding="tns:WSManagementxxxxerPointServiceSoapBinding" name="WSManagamentxxxxerPointPort">
      <soap:address location="http://lpmx2xxxxx.xxm.na.xxg:8080/dwhlp-ejb-1.0.0-SNAPSHOT/WSManagamentxxxxerPoint" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
Y la parte que podría ser relevante del archivo soapui-errors.log es la siguiente:
Cita:
2013-05-01 20:12:50,860 ERROR [WsdlSubmit] Exception in request: java.net.UnknownHostException: lpmx2xxxxx.xxm.na.xxg
2013-05-01 20:12:50,891 ERROR [errorlog] java.net.UnknownHostException: lpmx2xxxxx.xxm.na.xxg
java.net.UnknownHostException: lpmx2xxxxx.xxm.na.xxg
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOpe rator.java:242)
at com.eviware.soapui.impl.wsdl.support.http.SoapUIMultiThreadedHttpConnectionManager$SoapUIClientConne ctionOperator.openConnection(SoapUIMultiThreadedHttpConnectionManager.java:274)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:561)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport$Helper.execute(HttpClientSupport.java:23 6)
at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.execute(HttpClientSupport.java:345)
at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClien tRequestTransport.java:241)
at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:123)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Supongo que ésta última es una especie de call stack de Java, y ese método getAllByName0, podría ser el que ha elevado la excepción.

NOTA: Algunas partes las he cambiado por motivos de confidencialidad.

El método en cuestión se llama UploadFile. La pregunta es: ¿por qué se eleva una excepción diciendo que ese método no fue reconocido?

De antemano gracias por la información que puedan proporcionarme.

Saludos.

Al González.

P.D. Antes de hacer esta consulta leí información en varias decenas de sitios Web, incluyendo los foros de la Comunidad Delphi, pero no encontré nada que pareciera específico de este problema. Esta vez Google me falló.

P.D. #2 Lo sé, tal vez resulte que el WSDL que me proporcionaron no esté reflejando el contenido actual del servicio Web. Si termina siendo eso, voy a exigir el doble de paga o por lo menos una buena botella de vino.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como crear un "Cryptographic Message Syntax" en Delphi? old_martinez Varios 3 09-12-2016 16:41:59
Al consumir Servicio Web JAVA el array regresa vacio guacasoft73 Varios 1 15-05-2011 07:25:45
"system error code 1057 " al instalar servicio de windows jangel_ramirezm API de Windows 1 03-12-2009 14:59:50
Edatebase Error With Message 'ibsocios: Fiel" Not Found Zakio14 Firebird e Interbase 4 28-02-2008 01:50:25
Cómo saber el "nombre real" de un servicio Casimiro Notevi Windows 10 11-04-2007 21:13:58


La franja horaria es GMT +2. Ahora son las 11:06:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi