2012-01-25 14 views
5

Tôi chỉ đang cố chuyển đổi WSDl thành một số yêu cầu HTTP khác nhau từ dữ liệu do WSDL cung cấp. Tôi đã đọc qua rất nhiều câu hỏi tương tự, nhưng không có câu hỏi nào thực sự đưa ra câu trả lời.Chuyển đổi WSDL thành các liên kết HTTP tương ứng

Một số người nói sử dụng SOAPUI - Tôi quen thuộc với ứng dụng này và sử dụng nó. Nhưng tôi cần tự tạo các yêu cầu HTTP này từ WSDL.

Một số người nói thử jaxws - Tôi nhìn một số hướng dẫn về vấn đề này cũng như trên Axis và những dịch WSDL vào bindings lớp Java và bạn sử dụng những phương pháp để kiểm tra các dịch vụ web. Tôi thực sự muốn chỉ tạo ra HTTP-yêu cầu bản thân mình để tại một thời điểm tôi có thể thao tác các yêu cầu và gửi các bài kiểm tra của riêng tôi.

Tôi bắt đầu sử dụng wsdl4j để bắt đầu phân tích bản thân WSDL nhưng không muốn đi xuống con đường này cho đến khi tôi hoàn toàn chắc chắn rằng tôi không sáng tạo lại bánh xe. Dường như với tôi đã có một nhu cầu cho điều này trong quá khứ? Nhưng với WSDL4J và mọi thư viện khác, tôi không thấy bản dịch WSDL sang Soap message.

Mọi đề xuất sẽ rất hữu ích. Mục đích là tôi muốn có thể lấy một WSDL, kiểm tra nó và tạo các yêu cầu HTTP-SOAP cho từng phương thức trong WSDL và có thể kiểm tra chúng cho các vấn đề bảo mật. Bước đầu tiên là tạo các yêu cầu đó!

+0

woa, điều này đã được hỏi 5 năm trước! : o - và không ai chỉnh sửa nó trước tôi: o – Gewure

Trả lời

2

Khi gọi dịch vụ web SOAP, bạn có thể sử dụng lời gọi tĩnh hoặc lời gọi động.

Lời gọi tĩnh nghĩa là tạo một sơ khai từ WSDL và sử dụng để thực hiện cuộc gọi. Điều này tạo ra tất cả mã "hệ thống ống nước" cho bạn, nhưng được gắn chặt với dịch vụ web đó và bạn không thể sử dụng nó cho các dịch vụ web khác với các hợp đồng khác nhau. Đối với mỗi WSDL, bạn cần tạo một nhánh khác.

Với lời gọi động, bạn đọc WSDL khi chạy và tìm hiểu cách gọi dịch vụ web dựa trên thông tin bạn nhận được từ WSDL. Cho nó nhiều WSDL và khách hàng thích ứng.

Lời gọi động là những gì SoapUI sử dụng để tạo các yêu cầu và phản hồi mẫu.

Nó đọc WSDL bạn nạp nó, trích xuất lược đồ XML từ phần loại và tạo các cá thể XML. Để làm như vậy, nó sử dụng Wsdl4jXmlBeans dưới mui xe.

Quyết định sử dụng Wsdl4j của bạn là tốt vì nó cho phép bạn kiểm soát khi phân tích cú pháp WSDL. Nhưng cũng có một cái nhìn tại XmlBeans; nó có một số khác tools bạn có thể thấy hữu ích, chẳng hạn như lớp schema to instance chẳng hạn.

Nếu bạn cần phải nhìn thấy nó trong hành động (có thể gỡ lỗi nó để xem những gì đang xảy ra), bạn có thể tạo ra một thử nghiệm bẩn nhanh chóng với các API soapUI:

import com.eviware.soapui.impl.wsdl.WsdlInterface; 
import com.eviware.soapui.impl.wsdl.WsdlProject; 
import com.eviware.soapui.impl.wsdl.support.wsdl.WsdlImporter; 

public class Test { 
    public static void main(String[] args) throws Exception { 
     WsdlProject project = new WsdlProject(); 
     WsdlInterface[] wsdls = WsdlImporter.importWsdl(project, "http://www.html2xml.nl/Services/Calculator/Version1/Calculator.asmx?wsdl"); 
     WsdlInterface wsdl = wsdls[0]; 
     System.out.println(wsdl.getOperationByName("Add").createRequest(true)); 
     System.exit(0); // just to clear up some threads created by the project 
    } 
} 

Thông điệp bạn nên xem in (đối với Thêm hoạt động của Máy tính WS) sẽ giống như sau:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <tem:Add> 
     <tem:a>?</tem:a> 
     <tem:b>?</tem:b> 
     </tem:Add> 
    </soapenv:Body> 
</soapenv:Envelope> 

Hy vọng điều này sẽ giúp bạn vượt qua bước đầu tiên.