碼上快樂
1秒登錄
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
java soap 操作和發送soap消息
本文轉載自
查看原文
2013-03-28 13:18
4598
java
package
gov.hn12396.appintegration.mule.client;
import
gov.hn12396.appintegration.mule.util.EncoderUtil;
import
java.net.URL;
import
java.util.Calendar;
import
javax.xml.soap.MessageFactory;
import
javax.xml.soap.SOAPBody;
import
javax.xml.soap.SOAPConnection;
import
javax.xml.soap.SOAPConnectionFactory;
import
javax.xml.soap.SOAPElement;
import
javax.xml.soap.SOAPEnvelope;
import
javax.xml.soap.SOAPMessage;
import
javax.xml.soap.SOAPPart;
import
javax.xml.transform.Source;
import
javax.xml.transform.Transformer;
import
javax.xml.transform.TransformerFactory;
import
javax.xml.transform.stream.StreamResult;
import
org.w3c.dom.Node;
/**
* 功能描述:模擬客戶端A-即服務調用者,通過該類模擬客戶端發送soap報文給mule,
* 同時把mule的響應報文打印出來做測試
* @author liuxp
*
*/
public
class
SynClient {
public
static
void
main(String args[]) {
try
{
// 創建連接
// ==================================================
SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory
.newInstance();
SOAPConnection connection = soapConnFactory.createConnection();
// 創建消息對象
// ===========================================
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
// message.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "gb2312");
// 創建soap消息主體==========================================
SOAPPart soapPart = message.getSOAPPart();
// 創建soap部分
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
// 根據要傳給mule的參數,創建消息body內容。具體參數的配置可以參照應用集成接口技術規范1.1版本
// =====================================
SOAPElement bodyElement = body.addChildElement(envelope.createName(
"process"
,
"Request"
,
"http://esb.service.com/"
));
bodyElement.addChildElement(
"ServiceCode"
).addTextNode(
"10000061"
);
bodyElement.addChildElement(
"OrigAppId"
).addTextNode(
"999"
);
bodyElement.addChildElement(
"HomeAppId"
).addTextNode(
"998"
);
Calendar c = Calendar.getInstance();
String reqTime = String.valueOf(c.getTimeInMillis());
bodyElement.addChildElement(
"ReqTime"
).addTextNode(reqTime);
bodyElement.addChildElement(
"IpAddress"
).addTextNode(
"10.212.40.112"
);
bodyElement.addChildElement(
"OrigSerialNo"
).addTextNode(
"201205242011"
);
//(ServiceCode+ OrigAppId+ ReqTime+ IpAddress)簽名
String AppSignature =
"10000061"
+
"999"
+reqTime+
"10.212.40.112"
+
"123456"
;
bodyElement.addChildElement(
"AppSignature"
).addTextNode(EncoderUtil.md5(AppSignature));
bodyElement.addChildElement(
"Version"
).addTextNode(
"014"
);
// bodyElement.addChildElement("RelSessionId").addTextNode("RelSessionId");
// bodyElement.addChildElement("ReplyCode").addTextNode("ReplyCode");
bodyElement.addChildElement(
"ReplyVersion"
).addTextNode(
"05"
);
bodyElement.addChildElement(
"TimeOut"
).addTextNode(
"30"
);
// bodyElement.addChildElement("FtpDir").addTextNode("FtpDir");
// bodyElement.addChildElement("FileList").addTextNode("FileList");
bodyElement.addChildElement(
"serviceParas"
).addTextNode(
"<param><name>apptest</name><password>apptest</password></param>"
);
// Save the message
message.saveChanges();
// 打印客戶端發出的soap報文,做驗證測試
System.out.println(
" REQUEST: "
);
message.writeTo(System.out);
System.out.println(
" "
);
/*
* 實際的消息是使用 call()方法發送的,該方法接收消息本身和目的地作為參數,並返回第二個 SOAPMessage 作為響應。
* call方法的message對象為發送的soap報文,url為mule配置的inbound端口地址。
*/
URL url =
new
URL(
"http://localhost:9003/WebServiceSyn/process"
);
System.out.println(url);
// 響應消息
// ===========================================================================
SOAPMessage reply = connection.call(message, url);
//reply.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "gb2312");
// 打印服務端返回的soap報文供測試
System.out.println(
"RESPONSE:"
);
// ==================創建soap消息轉換對象
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
// Extract the content of the reply======================提取消息內容
Source sourceContent = reply.getSOAPPart().getContent();
// Set the output for the transformation
StreamResult result =
new
StreamResult(System.out);
transformer.transform(sourceContent, result);
// Close the connection 關閉連接 ==============
System.out.println(
""
);
connection.close();
/*
* 模擬客戶端A,異常處理測試
*/
SOAPBody ycBody = reply.getSOAPBody();
Node ycResp = ycBody.getFirstChild();
System.out.print(
"returnValue:"
+ycResp.getTextContent());
}
catch
(Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。
猜您在找
java soap 操作和發送soap消息
1.java soap api操作和發送soap消息
Zookeeper Client基礎操作和Java調用
Python發送Soap報文
java如何實現qq發送消息
關於Java的=賦值操作和方法傳遞對象時的引用
java的字符串操作和for循環的使用
java集成WebSocket向指定用戶發送消息
Java模擬異步消息的發送與回調
java實現kafka消息發送和接收
粵ICP備18138465號
© 2018-2025 CODEPRJ.COM