c# - 如何将 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();
解决方案
推荐阅读
- mysql - 如何删除mysql内部连接中的重复行
- reactjs - 创建 React App 单元测试不会在 VMWare Horizon Client 中执行
- c# - 如何在安装 Outlook 加载项时询问用户权限?
- c# - 如何将最大化的表单移动到另一个屏幕?
- vue.js - Vue CLI 3 使用波浪号“~”构建输出文件
- r - 返回遍历列表列表的循环内列表的名称
- vba - 由 VBA 代码设置的自定义节目的操作,但它显示“自定义节目”不存在“
- python - 定位通过 anaconda navigator 安装的软件包的问题
- listview - Xamarin 在列表视图中形成自定义步进值
- parsing - 一起使用 grep -A 和 -v 开关