首页 > 解决方案 > 如何将 xml 数据发送到 IP。C# 控制台应用程序

问题描述

我需要创建一个 C# 控制台来将一些 XML 发送到某个 IP,但我不知道该怎么做。我尝试遵循此https://www.codeproject.com/Questions/694983/How-to-pass-XML-data-using-TCP-IP-in-csharp,但收到错误 400 错误请求。

XML:

<?xml version='1.0' encoding='iso-8859-1' ?>
    <DSOLAck>
      <LenderRefNumber>DT212477ZZZ02</LenderRefNumber>
       <AckRequestInError>1</AckRequestInError>
      <ErrorMessage>
        <SequenceNumber> 1 </SequenceNumber>
        <ErrorCode>0</ErrorCode>
        <ErrorMessage>Success</ErrorMessage>
      </ErrorMessage>
    </DSOLAck>

IP 示例:12.345.678.90

我试过的代码:

Int32 port = 80;
      IPAddress localAddr1 = IPAddress.Parse("XX.XXX.XXX.XX");
      TcpClient client = new TcpClient();
      client.Connect(localAddr1, port);
      var clientConnected = client.Connected.ToString();

      //Following is the XML message
      MemoryStream ms = new MemoryStream();
      XmlDocument doc = new XmlDocument();

      var pathAuto = $"Some path";
      doc.Load(pathAuto);
      doc.Save(ms);
      Byte[] data = ms.ToArray();

      NetworkStream stream = client.GetStream();
      StreamWriter writer = new StreamWriter(stream, Encoding.UTF8);
      writer.AutoFlush = false;
      writer.Write(data.Length);
      writer.Write(data);
      writer.Flush();
      stream.Write(data, 0, data.Length);
      var dataAvailable = stream.DataAvailable.ToString();


      Byte[] bytes = new Byte[client.ReceiveBufferSize];
      string responseData;
      stream.Read(bytes, 0, Convert.ToInt32(client.ReceiveBufferSize));
      responseData = Encoding.ASCII.GetString(bytes);
      stream.Close();
      client.Close();

标签: c#xmlipconsole-application

解决方案


推荐阅读