Мне нужно создать консоль 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();