无法使用SOAP向Web服务发出请求

时间:2009-10-19 14:14:10

标签: xml visual-studio-2005 soap

我的要求是我将在XML中使用SOAP数据。我将从文件中读取,然后将请求发送到webservice.Then,我需要将响应写入文件。我正在使用vs 2005。

XmlDocument doc = new XmlDocument();
        doc.Load(@"path to xml file");
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.w3schools.com/webservices/tempconvert.asmx");


        req.Headers.Add("SOAPAction", "\"\"");

        req.ContentType = "text/xml;charset=\"utf-8\"";
        req.Accept = "text/xml";
        req.Method = "POST";
        Stream stm = req.GetRequestStream();
        doc.Save(stm);
        stm.Close();
        WebResponse resp = req.GetResponse();
        stm = resp.GetResponseStream();
        StreamReader r = new StreamReader(stm);
        Console.WriteLine(r.ReadToEnd());

1 个答案:

答案 0 :(得分:0)

您还没有说明您遇到的问题。您期待发生什么以及实际发生了什么?

无论如何,您尝试调用的Web服务似乎是一个ASP.Net Web服务(从URL上的.asmx扩展名推断)。我怀疑问题出在您的SOAPAction标头中,该标头应设置为与Web方法名称连接的Web服务命名空间。在您的示例中,我认为这将是http://tempuri.org/CelciusToFahrenheit。您在<CelciusToFahrenheit>元素上也有错误的XML命名空间。它应该是http://tempuri.org

尽管如此,这并不是从C#中使用Web服务的好方法。您应该将Web服务的WSDL作为Web引用添加到项目中,然后只需调用生成的类来调用Web服务功能。

由于您正在调用的服务是打开文档的ASP.Net Web服务,您实际上可以在http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit

查看完整的请求和响应格式