【问题标题】:Send XML via HTTP Post to IP:Port通过 HTTP Post 发送 XML 到 IP:Port
【发布时间】:2009-07-08 16:02:24
【问题描述】:

好的,开始吧,我没有使用任何类型的网络服务。现在,除了接收 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 只是有人会粘贴到那里的东西吗?
  • 不,是 WinForms App 可以做 HTTP Post。

标签: c# xml http post


【解决方案1】:

发出简单网络请求的推荐方法是使用 WebClient 对象。

这是一个代码sn-p:

// 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?
  • 不要忘记从 xml 声明中删除encoding 属性(例如&lt;?xml version="1.0"?&gt;),或者使编码属性与WebClient.Encoding 属性的编码匹配(例如&lt;?xml version="1.0" encoding="UTF-16"?&gt; ) 注意: 我不知道WebClient 的默认编码是什么,但你最好希望它是某种形式的Unicode。
【解决方案2】:

如果您有 IP 和端口,为什么不尝试基于 TCP/IP 的 XML。在 C# 中,您可以使用 System.Net.Sockets 类 TCPClient 来执行此操作。该类具有 Connect 、 send 和 receive 方法,以便连接 IP 和端口,然后发送消息并等待接收消息。

【讨论】:

  • 为什么不呢?你不应该重新发明轮子。已经有一个经过测试、安全检查、维护的代码库可以将数据发送到 http 服务器。尽管自己编写套接字代码很有趣,但其中很容易出现错误或安全漏洞。
猜你喜欢
  • 2014-03-12
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2016-09-22
相关资源
最近更新 更多