2015-09-14 24 views
7

Tôi hiện đang nghiên cứu định dạng Tin nhắn SOAP để chuyển đổi định dạng Tin nhắn Ổ cắm và ngược lại bằng cách sử dụng Java.Định dạng Tin nhắn SOAP sang Chuyển đổi định dạng tin nhắn Ổ cắm và ngược lại bằng cách sử dụng Java

Tôi cần điều này để sử dụng lại hệ thống kế thừa đọc thông điệp định dạng ổ cắm để kết nối với trang web gửi và nhận định dạng thông điệp SOAP.

Tôi nên làm như thế nào? Tôi có nên xem xét xử lý văn bản không?

mẫu Ổ cắm để SOAP

SOCKET

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Interface Code="20" 
     <Transaction Txn="01880120121024000001" CD="01880120121024000001001" 
    Date="2012-10-24 17:27:25" BirthDate="1983-03-27" Code="8110009000000720" Type="0"/> 
</Interface> 

SOAP

<?xml version='1.0' encoding='UTF-8'?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soapenv:Body> 
    <webRequest xmlns="http://____________"> 
    <arg0 xmlns="">&lt;?xml version="1.0" encoding="UTF-8" 
    standalone="yes"?>&lt;Interface xmlns="http://____________" 
    Version="1.0" Code="20" Txn="123" CD="456">&lt;Info 
    BirthDate="1983-03-27" Code="1234" Type="0" />&lt;/Interface></arg0> 
    </webRequest> 
</soapenv:Body> 
</soapenv:Envelope> 

Trả lời

5

Thông điệp ổ cắm là cơ quan XML thoát của thông điệp SOAP. Bạn không cần thêm thư viện, vì có các lớp javax cho parsing SOAP requests.

SOAP để ổ cắm là đơn giản:

String message = "<?xml version='1.0' encoding='UTF-8'?>\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n <soapenv:Body>\n <webRequest xmlns=\"http://____________\">\n <arg0 xmlns=\"\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"\n standalone=\"yes\"?>&lt;Interface xmlns=\"http://____________\"\n Version=\"1.0\" Code=\"20\" Txn=\"123\" CD=\"456\">&lt;Info\n BirthDate=\"1983-03-27\" Code=\"1234\" Type=\"0\" />&lt;/Interface></arg0>\n </webRequest>\n </soapenv:Body>\n</soapenv:Envelope>"; 
InputStream is = new ByteArrayInputStream(message.getBytes()); 
SOAPMessage request = MessageFactory.newInstance().createMessage(null, is); 
System.out.println(request.getSOAPBody().getTextContent()); 

Ổ cắm để SOAP là phức tạp hơn bởi vì chúng ta cần phải tạo ra các yếu tố webRequest gói:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
docFactory.setNamespaceAware(true); // webRequest needs a namespace 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

Document doc = docBuilder.newDocument(); 
Element root = doc.createElementNS("http://____________", "webRequest"); 
doc.appendChild(root); 

Element argElement = doc.createElement("arg0"); 
root.appendChild(argElement); 
String message = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Interface Code=\"20\" \n  <Transaction Txn=\"01880120121024000001\" CD=\"01880120121024000001001\" \n  Date=\"2012-10-24 17:27:25\" BirthDate=\"1983-03-27\" Code=\"8110009000000720\" Type=\"0\"/>\n</Interface>"; 
argElement.setTextContent(message); 

SOAPMessage request = MessageFactory.newInstance().createMessage(); 
request.getSOAPBody().addDocument(doc); 
request.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true"); 
request.writeTo(System.out); 
+0

Cảm ơn! Được trao giải thưởng, tiền thưởng được chấp nhận –

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