2012-01-11 12 views
7

Utilizzando il seguente file WSDL di esempio, ho generato un nuovo progetto in SOAP UI (versione 3.5) e creato la suite di test di esempio, il caso di test e il servizio di simulazione.SoapUI MockServices restituisce risposta html anziché 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> 

posso avviare il servizio di finto e l'accesso tramite il browser, per cui vedo un link alla WSDL e posso vederlo.

Tuttavia, utilizzando la richiesta di sapone generata predefinita (come indicato di seguito), restituisce una risposta HTML (che sembra essere la pagina Web) anziché la risposta di sapone che ho configurato.

RICHIESTA

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> 

RISPOSTA

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> 

Ho configurato una risposta campione come segue:

CAMPIONE DI RISPOSTA sui campioni

<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> 

È configurato come risposta predefinita, quindi non ho idea del motivo per cui non viene restituito.

Qualche suggerimento? +1 a tutto ciò che mi aiuta a progredire.

Grazie

+0

Stesso problema richiesto qui: http://www.soapui.org/forum/viewtopic.php?t=4177 – Jimmy

+0

Per curiosità: è possibile creare un semplice client Java che richiama quel servizio Web e ottiene una risposta da? –

risposta

10

Nessun servizio viene avviato per l'URL di endpoint dalla richiesta: http://localhost:8088/SayHello/. L'unico servizio avviato si trova all'URL http://localhost:8088/mockHello_Binding come riportato nella risposta del servizio. SoapUI restituisce l'elenco di tutti i servizi di simulazione avviati nella pagina HTML quando ne viene richiesto uno inesistente. Prendi in considerazione la possibilità di correggere l'indirizzo dell'endpoint per risolvere questo problema.

-1

Ho un problema simile con BizTalk 2010 Porta di invio e Mock SOAPUI webservice. Ho scoperto che l'URL 2 er diverso Quando apro questo in IE..Vedo la risposta HTML. http://localhost:8088/MockUpdateBasicHttp

Quando si apriva questo in IE ho ottenuto uno schermo bianco vuoto che normalmente significa successo. http://localhost:8088//MockUpdateBasicHttp

L'URL corretto è con un solo '/' dopo il numero di porta. http://localhost:8088/MockUpdateBasicHttp

1

Ho riscontrato lo stesso problema utilizzando soap ui 5.4.0. È successo perché il percorso del servizio fittizio creato non era corretto.

Se si fa clic sull'interfaccia utente soap, sul servizio di simulazione creato - pulsante proprietà in basso - si vedrà che il percorso è simile a/mockBindingservice, dovrebbe dire /.

Per cambiarlo, fare doppio clic sul servizio di simulazione creato, fare clic su Interrompi servizio rispetto al pulsante Impostazioni (situato accanto ai pulsanti Arresta e Avvia). Cambia percorso in/e controlla doppio host.

Salvare, avviare il servizio. Dovrebbe funzionare ora.

So che si tratta di un vecchio post, ma speriamo che possa aiutare a cercare la persona malata.

+0

Per favore termina il tour. Bene, hai pubblicato il tuo numero di versione del sapone con la tua risposta. In questo modo mantiene un po '... aggiornato ;-) – ZF007

0

L'URL che si sta colpendo non è corretto. L'URL MockService si crea mentre si importa il WSDL per SOAP con porta predefinita 8088. Soluzione: 1) Creare un nuovo progetto 2) Importa WSDL 3) controllo Crea Mockervice 4) poi si vedrà l'URL in cui verrà eseguito mockservice :: -> mockSearchURL (ad esempio) 5) hit HTTP://{IP}:8088/mockSearchURL

FATTO !!

Problemi correlati