通过HTTP Post将XML发送到IP:端口

5

好的,首先我没有使用任何网络服务。目前,我对接收XML的应用程序并不了解,除了知道它会接收XML之外,我并没有太多的帮助。我没有编写接收应用程序,但是我的公司没有任何有用的方法来测试XML传输阶段。

我想发送像这样的XML文档...

<H2HXmlRequest class="myClass">
<Call>
    <CallerID></CallerID>
    <Duration>0</Duration>
</Call>
<Terminal>
    <CancelDate></CancelDate>
    <ClerkLoginTime></ClerkLoginTime>
</Terminal>
<Transaction>
    <AcceptedCurrency></AcceptedCurrency>
    <AccountId>6208700003</AccountId>
</Transaction>
</H2HXmlRequest>

我对这个应用程序并不是很了解。如果有适当的帮助,我可能会找到更多信息。但是我想做的是编写一种C# Forms应用程序,可以接收上述请求,并使用IP和端口将其发送出去,希望能看到一些反馈。


你在这里混淆了很多概念。标题说的是HTTP POST,但问题提到了Forms应用程序并通过TCP端口发送它。那么它是Web应用程序还是WinForms应用程序?XML只是有人会粘贴进去的东西吗? - Knut Haugen
不,这是一个能够进行HTTP Post的WinForms应用程序。 - Steven
2个回答

10

建议使用WebClient对象进行简单的网络请求。

以下是代码片段:

// assume your XML string is returned from GetXmlString()
string xml = GetXmlString();


// assume port 8080
string url = new UriBuilder("http","www.example.com",8080).ToString();     


// create a client object
using(System.Net.WebClient client = new System.Net.WebClient()) {
    // performs an HTTP POST
    client.UploadString(url, xml);  

}

应该使用 System.Net 而不是 System.Web 吗? - Steven
不要忘记从xml声明中删除encoding属性(例如<?xml version="1.0"?>),或者使编码属性与WebClient.Encoding属性的编码匹配(例如<?xml version="1.0" encoding="UTF-16"?>)。注意:我不知道WebClient的默认编码是什么,但你最好希望它是某种形式的Unicode。 - Ian Boyd

0
如果您有IP和端口,为什么不尝试XML over TCP/IP呢?在C#中,您可以通过使用System.Net.Sockets类TCPClient来实现这一点。这个类拥有连接、发送和接收消息的方法,可以连接到IP和端口,然后发送消息并等待接收消息。

2
为什么不呢?你不应该重新发明轮子。已经有一个经过测试、安全检查和维护的代码库,可以将数据发送到HTTP服务器。虽然编写自己的套接字代码很有趣,但其中很容易出现漏洞或安全隐患。 - Ian Boyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接