MQMessage queueMessage = new MQMessage();
queueMessage.WriteString(strInputMsg);
queueMessage.Format = MQC.MQFMT_STRING;
MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
Queue.Put(queueMessage, queuePutMessageOptions);
Sử dụng C#, với đoạn code trên, khi tôi nhập vào thông điệp vào hàng đợi, chiều dài dữ liệu của thông điệp là 3600.Đưa tin nhắn trong Websphere MQ qua C# có chiều dài dữ liệu khác nhau hơn so với tay đặt cùng một thông điệp
Khi tôi nhập thủ công thư vào hàng đợi bằng cách nhấp chuột phải vào hàng đợi và chọn tùy chọn Đặt thông báo kiểm tra, độ dài dữ liệu của thư là 1799.
Tôi thực sự bối rối vì lý do này. Thông báo trong cả hai trường hợp là chuỗi xml có khai báo. Trong Notepad ++, có 1811 ký tự bao gồm cả khai báo. Khi tôi xem thông báo trong trình gỡ rối trước khi tôi nhập vào hàng đợi, thông báo được chuyển đổi thành xml mà không có bất kỳ dòng hoặc trả lại toa xe nào.
Tôi tạo ra chuỗi xml sử dụng:
//converts string message into xml by serializing it
public string GetMessage(MyMessage messageInstance)
{
// Serialize the request
XmlSerializer xsr = new XmlSerializer(typeof(MyMessage));
MemoryStream memoryStream = new MemoryStream();
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xsr.Serialize(xmlTextWriter, messageInstance);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
string XmlizedString = new UTF8Encoding().GetString((memoryStream.ToArray());
// Encode the xml
Encoding utf = Encoding.UTF8;
byte[] utfBytes = utf.GetBytes(XmlizedString);
// Load the document (XmlResolver is set to null to ingore DTD)
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.XmlResolver = null;
xmlDoc.LoadXml(utf.GetString(utfBytes));
return utf.GetString(utfBytes);
Am tôi thiếu bất cứ điều gì trong C thực hiện của tôi # mà sẽ bổ sung thêm các ký tự?
Cảm ơn.
UTF8 vs ASCII? – Matten