2012-01-11 39 views
7

Sử dụng tệp WSDL mẫu sau, tôi đã tạo một dự án mới trong giao diện người dùng SOAP (phiên bản 3.5) và tạo bộ thử mẫu, trường hợp thử nghiệm và dịch vụ mô phỏng.SoapUI MockServices trả về html thay vì phản hồi 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> 

tôi có thể khởi động các dịch vụ giả và truy cập thông qua trình duyệt, nhờ đó mà tôi nhìn thấy một liên kết đến wsdl và có thể xem nó.

Tuy nhiên, bằng cách sử dụng yêu cầu xà phòng được tạo mặc định (như sau), nó trả về phản hồi html (dường như là trang web) thay vì phản hồi xà phòng mà tôi đã định cấu hình.

YÊU CẦU

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> 

ỨNG PHÓ

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> 

Tôi đã cấu hình một phản ứng mẫu như sau:

MẪU phản ứng trên Mock

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

Được định cấu hình làm phản hồi mặc định, vì vậy tôi không biết tại sao nó không được trả lại.

Mọi đề xuất? +1 cho bất cứ điều gì giúp tôi tiến bộ điều này.

Cảm ơn

+0

Vấn đề tương tự được yêu cầu tại đây: http://www.soapui.org/forum/viewtopic.php?t=4177 – Jimmy

+0

Hết sức tò mò - Bạn có thể tạo một máy khách Java đơn giản gọi dịch vụ web đó và nhận phản hồi hay không từ nó? –

Trả lời

10

Không có dịch vụ được bắt đầu cho URL endpoint từ yêu cầu của bạn: http://localhost:8088/SayHello/. Dịch vụ bắt đầu chỉ được đặt tại URL http://localhost:8088/mockHello_Binding như được báo cáo trong phản hồi dịch vụ. SoapUI trả về danh sách tất cả các dịch vụ giả lập bắt đầu trong trang HTML khi một yêu cầu không tồn tại được yêu cầu. Xem xét sửa địa chỉ điểm cuối để giải quyết vấn đề này.

-1

Tôi có sự cố tương tự với dịch vụ web Gửi Cổng và Mock SOAPUI của BizTalk 2010. Tôi phát hiện ra rằng 2 URL er khác nhau Khi tôi mở trang này trong IE..Tôi thấy phản hồi HTML. http://localhost:8088/MockUpdateBasicHttp

Khi bạn mở tính năng này trong IE, tôi có một màn hình trắng trống thường có nghĩa là thành công. http://localhost:8088//MockUpdateBasicHttp

URL chính xác chỉ bằng một '/' sau số cổng. http://localhost:8088/MockUpdateBasicHttp

1

Tôi đã gặp vấn đề tương tự khi sử dụng xà phòng ui 5.4.0. Nó đã vui vẻ beacuse con đường của dịch vụ giả tạo được tạo ra là không chính xác.

Nếu bạn nhấp vào giao diện người dùng xà phòng, trên nút tạo dịch vụ mô phỏng - thuộc tính được tạo ở phía dưới - bạn sẽ thấy rằng đường dẫn của bạn trông giống như/mockBindingservice, nên nói /.

Để thay đổi, hãy nhấp đúp vào dịch vụ mô phỏng đã tạo, nhấp vào nút dừng dịch vụ hơn nút cài đặt (nằm bên cạnh nút dừng và bắt đầu) .Thay đổi đường dẫn đến/và kiểm tra máy chủ.

Lưu, bắt đầu dịch vụ. Nên làm việc ngay bây giờ.

Tôi biết nó là một bài đăng cũ, nhưng hy vọng nó sẽ giúp sombody tìm kiếm các anwser.

+0

Vui lòng hoàn thành chuyến tham quan. Tốt bạn gửi số phiên bản xà phòng của bạn với câu trả lời của bạn. Bằng cách này nó giữ một chút ... cập nhật ;-) – ZF007

0

Url bạn đang truy cập không chính xác. URL MockService được tạo trong khi bạn nhập WSDL vào SOAP với cổng mặc định 8088. Giải pháp: 1) Tạo dự án mới 2) Nhập WSDL 3) Kiểm tra Tạo Mockervice 4) Sau đó, bạn sẽ xem URL nơi mockservice sẽ chạy :: -> mockSearchURL (ví dụ: 5) nhấn HTTP://{IP}:8088/mockSearchURL

XONG !!

Các vấn đề liên quan