Как отправить XML-данные на IP.Консольное приложение C # - PullRequest
0 голосов
/ 25 сентября 2018

Мне нужно создать консоль C # для отправки некоторого XML на определенный IP, но я понятия не имею, как это сделать.Я попытался выполнить это https://www.codeproject.com/Questions/694983/How-to-pass-XML-data-using-TCP-IP-in-csharp,, но получил ошибку 400 Bad Request.

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();
...