2013-07-04 183 views
0

這是信封,我想送服務:添加命名空間前綴的Axis2

<?xml version='1.0' encoding='utf-8'?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> 
     <sear:searchUrls> 
      <sear:in0>Safeway, 200 S. 3rd St, Renton, WA</sear:in0> 
     </sear:searchUrls> 
    </soapenv:Body> 
</soapenv:Envelope> 

這是代碼來構建它:

SOAPFactory fac = OMAbstractFactory.getSOAP12Factory(); 
SOAPEnvelope envelope = fac.getDefaultEnvelope(); 

OMNamespace omNs = fac.createOMNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv"); 
OMNamespace ns1 = fac.createOMNamespace("http://search", "sear"); 

envelope.setNamespace(omNs); 

OMNamespace ns = fac.createOMNamespace("", "") 
OMElement method = fac.createOMElement("sear:searchUrls", ns); 
OMElement value = fac.createOMElement("sear:in0", ns); 
value.setText("Safeway, 200 S. 3rd St, Renton, WA"); 
method.addChild(value); 
envelope.getBody().addChild(method); 

但沒有規定我的命名空間前綴「燒焦」 。 如何在代碼中設置它以獲取

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sear="http://search"> 

in XML?

+0

更多信息,您需要檢查是應該告訴你要發送到的服務是什麼XML片段。它混合使用了SOAP 1.1和SOAP 1.2,並且沒有用於'sear'前綴的名稱空間聲明。因此它是無效的。我懷疑這段代碼顯示了代碼的實際輸出,而不是你想要生成的消息。 –

回答

1
envelope.addNamespaceDeclaration("sear", "http://search"); 
+0

「addNamespaceDeclaration()」方法不存在。改用'envelope.declareNamespace(「URI」,「Prefix」)' – vkrams