Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过HTTP Post将XML发送到IP:端口_C#_Xml_Http_Post - Fatal编程技术网

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

C# 通过HTTP Post将XML发送到IP:端口,c#,xml,http,post,C#,Xml,Http,Post,好的,首先,我没有使用任何类型的web服务。现在,除了接收XML之外,我对接收XML的应用程序了解不多。我知道你帮了大忙。我没有编写接收应用程序,但我的公司没有任何有用的方法来测试XML传输阶段 我基本上想发送这样的XML文档 <H2HXmlRequest class="myClass"> <Call> <CallerID></CallerID> <Duration>0</Duration> </Cal

好的,首先,我没有使用任何类型的web服务。现在,除了接收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>

0
6208700003

…对于我并不十分了解的应用程序。这没什么特别的,只要有适当的帮助,我可能会找到更多的信息。但是我想做的是开发一种C#Forms应用程序,它可以接受上面的请求,通过IP和端口发送请求,并希望看到一些事情发生。

制作简单web请求的推荐方法是使用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);  

}

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

这里混合了很多概念。标题是http POST,但问题提到表单应用程序并通过TCP端口发送。那是哪一个呢?web应用程序还是WinForms应用程序?XML只是有人会粘贴到其中的东西吗?不,它是可以执行HTTP Post的WinForms应用程序。它应该是System.Net而不是System.Web吗?不要忘记从XML声明中删除
编码属性(例如
),或者使encoding属性与
WebClient.encoding
属性的编码匹配(例如
)注意:我不知道
WebClient
的默认编码是什么,但您最好希望它是某种形式的Unicode。为什么不呢?你不应该重新发明轮子。已经有一个经过测试、安全检查和维护的代码库,可以将数据发送到http服务器。尽管自己编写套接字代码很有趣,但很容易出现bug或安全漏洞。