Tôi đã nhập WSDL và sử dụng nó để gửi yêu cầu SOAP. Có vẻ như sau:Xóa vùng tên khỏi yêu cầu SOAP
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<Calculate xmlns="urn:xx.WSDL.xxxxxWebService">
<ContractdocumentIn>
<AL>
...More XML...
Sự cố là phần xmlns="urn:xx.WSDL.xxxxxWebService"
trong phần tử Tính toán. Dịch vụ web không thể chấp nhận điều này. Các dịch vụ web không thích không gian tên như thế này ...
Sử dụng SoapUI tôi thấy yêu cầu này chỉ làm việc tốt:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:col="http://example.com.service.xxx/">
<SOAP-ENV:Body>
<col:Calculate>
<ContractdocumentIn>
<AL>
...More XML...
Vì vậy, làm thế nào để tôi thay đổi theo yêu cầu từ người đầu tiên phiên bản thứ hai? (Nếu không sử dụng thủ đoạn bẩn thỉu!)
(Re-nhập khẩu không phải là một vấn đề nếu điều này sẽ dẫn đến việc định dạng yêu cầu thích hợp.)
Một lần nữa: không có thủ đoạn bẩn cho phép, như hack dòng yêu cầu sửa đổi nó !
Và trong khi tôi đã không hoàn toàn được thử nghiệm nó, có vẻ như C#/VS2010 và Delphi 2010 cũng không thể sử dụng các dịch vụ web mà tôi đang cố gắng để gọi. Một dịch vụ web dường như được viết bằng Java. SoapUI xảy ra để được viết bằng Java, do đó chúng tôi có một khách hàng Java nói chuyện với một dịch vụ Java, mà dường như làm việc tốt. Nhưng bất kỳ khách hàng nào khác?
Dù sao thì, thời gian để thêm hai thẻ nữa: "Java", vì đây là dịch vụ Java và "vs2010" vì .NET cũng không thích dịch vụ này.
Và tôi chuẩn bị viết một trình bao bọc xung quanh dịch vụ này trong .NET, hy vọng nó sẽ hoạt động ... Nó không có. Đây là một lỗ hổng rất nghiêm trọng, có thể là lỗ hổng Java ...
Chúc may mắn. Tôi đã phải dùng đến những thủ thuật bẩn thỉu. –
Vâng, tôi biết. Tôi có lẽ có thể giải quyết nó bằng cách sử dụng thủ đoạn bẩn thỉu, nhưng quản lý không đồng ý với điều đó. Vì vậy, mã cần phải được sạch sẽ. –
Mã SOAP cung cấp các móc để bạn kiểm tra XML đang được gửi và sửa đổi nó nếu bạn cần. Nó hỗ trợ thao tác thủ công một cách rõ ràng. Và mã sẽ ở đó - không có gì "bẩn" về thao tác sau xây dựng. Có thể không được tốt đẹp như tự động, nhưng không ai phải lo lắng về nó. – mj2008