通过TCP / IP发送XML

时间:2017-06-08 06:18:49

标签: c# xml sockets utf-8 tcp

我正在尝试创建一个将连接到另一个的第三方应用程序。应用程序之间的通信使用XML建立。我通过套接字发送消息,但我收到的消息说收到的文件是空的。我发送XML字符串的应用程序是否有任何理由接收空消息。 我是c#的新手,所以任何其他示例代码和链接都会有很大帮助。

例如,当我发送这样的ping消息时:

<?xml version="1.0" encoding="UTF-8"?> <message msg_id=”54323” > <ping/> </message>\0

返回字符串应如下所示:

<?xml version="1.0" encoding="UTF-8"?> <return_message msg_id=”54323” />\0

但我明白了:

<?xml version="1.0" encoding="UTF-8"?> <return_error msg_id=”54323” > <error id=”errID1” reason=”document empty” /> </return_error >\0

我的代码如下所示:

        public static string sendStringRequest(String hostname, int port, string message)
    {

        try
        {
            byte[] data = System.Text.Encoding.ASCII.GetBytes(message);

            TcpClient client = new TcpClient(hostname, port);

            NetworkStream stream = client.GetStream();
            BinaryWriter writer = new BinaryWriter(stream, Encoding.UTF8);
            writer.Write(message);

            data = new Byte[256];

            // String to store the response ASCII representation.
            String responseData = String.Empty;

            Int32 bytes = stream.Read(data, 0, data.Length);

            responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);

            // Close everything.
            stream.Close();
            client.Close();
            return responseData;
        }
        catch (ArgumentNullException e)
        {
            MessageBox.Show("ArgumentNullException: " + e);
            return "null";
        }
        catch (SocketException e)
        {
            MessageBox.Show("SocketException: " + e);
            return "null";
        }
    }

0 个答案:

没有答案