2012-01-11 20 views
7

Utilizando el siguiente archivo WSDL de muestra, he generado un nuevo proyecto en SOAP UI (versión 3.5) y he creado el ejemplo de suite de prueba, caso de prueba y servicio simulado.SoapUI MockServices devolver respuesta html en vez de xml

WSDL

<definitions name="HelloService" 
    targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl" 
    xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

    <message name="SayHelloRequest"> 
     <part name="firstName" type="xsd:string"/> 
    </message> 
    <message name="SayHelloResponse"> 
     <part name="greeting" type="xsd:string"/> 
    </message> 

    <portType name="Hello_PortType"> 
     <operation name="sayHello"> 
     <input message="tns:SayHelloRequest"/> 
     <output message="tns:SayHelloResponse"/> 
     </operation> 
    </portType> 

    <binding name="Hello_Binding" type="tns:Hello_PortType"> 
    <soap:binding style="rpc" 
     transport="http://schemas.xmlsoap.org/soap/http"/> 
    <operation name="sayHello"> 
     <soap:operation soapAction="sayHello"/> 
     <input> 
     <soap:body 
      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
      namespace="urn:examples:helloservice" 
      use="encoded"/> 
     </input> 
     <output> 
     <soap:body 
      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
      namespace="urn:examples:helloservice" 
      use="encoded"/> 
     </output> 
    </operation> 
    </binding> 

    <service name="Hello_Service"> 
     <documentation>WSDL File for HelloService</documentation> 
     <port binding="tns:Hello_Binding" name="Hello_Port"> 
     <soap:address 
      location="http://www.examples.com/SayHello/"/> 
     </port> 
    </service> 
</definitions> 

puedo poner en marcha el servicio de maqueta y el acceso a través del navegador, por lo que veo un enlace con el WSDL y puedo verla.

Sin embargo, al usar la solicitud de jabón generada por defecto (de la siguiente manera), devuelve una respuesta html (parece ser la página web) en lugar de la respuesta de jabón que he configurado.

SOLICITUD

POST http://localhost:8088/SayHello/ HTTP/1.1 
Accept-Encoding: gzip,deflate 
Content-Type: text/xml;charset=UTF-8 
SOAPAction: "sayHello" 
User-Agent: Jakarta Commons-HttpClient/3.1 
Host: localhost:8088 
Content-Length: 467 

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:examples:helloservice"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <urn:sayHello soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
     <firstName xsi:type="xsd:string">James</firstName> 
     </urn:sayHello> 
    </soapenv:Body> 
</soapenv:Envelope> 

RESPUESTA

HTTP/1.1 200 OK 
Content-Type: text/html; charset=iso-8859-1 
Transfer-Encoding: chunked 
Server: Jetty(6.1.x) 

<html><body><p>There are currently 1 running soapUI MockServices</p><ul><li><a href="/mockHello_Binding?WSDL">Hello_Binding MockService</a></li></ul></p></body></html> 

He configurado una respuesta de la muestra de la siguiente manera: RESPUESTA

MUESTRA EN SIMULACRO

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:examples:helloservice"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <urn:sayHelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
     <greeting xsi:type="xsd:string">?</greeting> 
     </urn:sayHelloResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

Se configura como la respuesta predeterminada, por lo que no tengo idea de por qué no se devuelve.

¿Alguna sugerencia? +1 a cualquier cosa que me ayude a progresar esto.

Gracias

+0

Mismo problema que se pregunta aquí: http://www.soapui.org/forum/viewtopic.php?t=4177 – Jimmy

+0

Por curiosidad: ¿es capaz de crear un cliente Java simple que invoca ese servicio web y obtiene una respuesta? ¿de eso? –

Respuesta

10

Sin servicio se inicia para el URL de punto final de su solicitud: http://localhost:8088/SayHello/. El único servicio iniciado se encuentra en la dirección URL http://localhost:8088/mockHello_Binding como se informa en la respuesta del servicio. SoapUI devuelve la lista de todos los servicios falsos iniciados en la página HTML cuando se solicita una no existente. Considere la posibilidad de corregir la dirección del punto final para resolver este problema.

-1

Tengo un problema similar con BizTalk 2010 Send Port y Mock SOAPUI webservice. Descubrí que las 2 URL son diferentes Cuando abro esto en IE ... Veo la respuesta HTML. http://localhost:8088/MockUpdateBasicHttp

Cuando abriste esto en IE obtuve una pantalla blanca en blanco que normalmente significa éxito. http://localhost:8088//MockUpdateBasicHttp

La URL correcta es con un solo '/' después del número de puerto. http://localhost:8088/MockUpdateBasicHttp

1

He tenido el mismo problema al usar soap ui 5.4.0. Ha sucedido porque el camino del servicio simulado creado fue incorrecto.

Si hace clic en la interfaz de usuario de jabón, en el servicio de simulacro creado - botón de propiedades en la parte inferior - verá que su ruta se ve como/mockBindingservice, debería decir /.

Para cambiarlo, haga doble clic en el servicio simulado creado, haga clic en detener servicio que en el botón de configuración (ubicado al lado de los botones detener e iniciar). Cambiar ruta a/y verificar doble host.

Guardar, iniciar el servicio. Debería funcionar ahora

Sé que es una publicación anterior, pero espero que ayude a sombody a buscar la nave.

+0

Por favor, termine el recorrido. Bueno, publicaste tu número de versión de jabón con tu respuesta. De esta manera se mantiene un poco ... actualizado ;-) – ZF007

0

La URL a la que está accediendo es incorrecta. La URL MockService se crea mientras se importa el WSDL para SOAP con puerto predeterminado 8088. Solución: 1) Crear nuevo proyecto 2) Importar WSDL 3) de verificación Crear Mockervice 4) A continuación podrá ver la URL en la que se ejecutará mockservice :: -> mockSearchURL (por ej.) 5) pulse HTTP://{IP}:8088/mockSearchURL

¡¡HECHO !!

Cuestiones relacionadas