Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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# 以编程方式将xml数据发布到资源并序列化结果_C#_Xml_Asp.net Mvc_Http Post - Fatal编程技术网

C# 以编程方式将xml数据发布到资源并序列化结果

C# 以编程方式将xml数据发布到资源并序列化结果,c#,xml,asp.net-mvc,http-post,C#,Xml,Asp.net Mvc,Http Post,我正在尝试使用第三方提供商提供的相对较新的API。基本用法是发布一个格式为xml的查询。因此,从理论上讲,POST uri看起来像: myxml 反过来,我应该会收到一个xml格式的响应 这已经有一段时间了,所以我正在努力寻找最好的方法来实现这一点(事实上,我可以不太在意“最好的”,而只满足于让它工作起来) 到目前为止,我已经尝试使用WebClient和WebRequest。在将xml数据手动构建为字符串之后,最新的尝试使用了后者。我尝试将“xml”参数附加到uri,并将其写入StreamWri

我正在尝试使用第三方提供商提供的相对较新的API。基本用法是发布一个格式为xml的查询。因此,从理论上讲,POST uri看起来像:

myxml

反过来,我应该会收到一个xml格式的响应

这已经有一段时间了,所以我正在努力寻找最好的方法来实现这一点(事实上,我可以不太在意“最好的”,而只满足于让它工作起来)

到目前为止,我已经尝试使用WebClient和WebRequest。在将xml数据手动构建为字符串之后,最新的尝试使用了后者。我尝试将“xml”参数附加到uri,并将其写入StreamWriter。首先,我得到了某种WebResponse对象,但内容长度始终为-1,并且内容类型报告为text/html,这两种类型似乎都不合适。其次,我不确定如何解析WebResponse或将其内容序列化到对象图中

我在谷歌上搜索了不少,这些例子都不稳定或过时。我不想处理文件系统的编写。理想情况下,我能够填充自己的请求对象图,将其序列化为xml,发送帖子,并接收可以序列化回响应对象图的内容


任何帮助都将不胜感激。

最简单的方法是使用网络客户端:

class Program
{
    static void Main()
    {
        using (var client = new WebClient())
        {
            client.Headers[HttpRequestHeader.ContentType] = "text/xml";
            string xml = @"<foo><bar>baz</bar></foo>";
            string url = "http://provideraddress.com/?xml=myxml";
            string response = client.UploadString(url, xml);
            Console.WriteLine(response);
        }
    }
}
类程序
{
静态void Main()
{
使用(var client=new WebClient())
{
client.Headers[HttpRequestHeader.ContentType]=“text/xml”;
字符串xml=@“baz”;
字符串url=”http://provideraddress.com/?xml=myxml";
字符串响应=client.UploadString(url,xml);
控制台写入线(响应);
}
}
}
现在,就生成请求字符串而言,您可以使用.NET中可用的许多方法之一:,(这一方法开始过时,您可能更喜欢XDocument),或者使用。。。与响应XML相同=>您可以使用XDocument、XmlReader、XmlDocument对其进行解析,或者使用XmlSerializer将其反序列化回对象图


现在,如果服务器响应内容类型为
text/html
,并且没有返回任何响应,这可能是因为您发布的XML不是服务器期望的格式,您没有提供服务器期望的HTTP请求头,服务器在处理您的请求时遇到了一些错误。。。阅读第三方API的文档,确保您遵守其格式。有些API可能需要先进行身份验证。因此,您需要向某个url发送一个带有用户名和密码的请求,如果身份验证成功,服务器会向您发回一个令牌或cookie,您应该在所有后续请求中发送该令牌或cookie。

FYI,我不是要求任何人为我做我的工作,我只是在寻找可靠的资源。谢谢Darin。我试过那种方法。我开始认为我试图使用的资源有问题。我已经联系了他们的支持小组。