使用C#中的SOAP API调用不带代理的Web服务

时间:2012-08-29 11:52:05

标签: c# wcf soap

我有一个带有一个公开方法GetData的Web服务。它接受一个字符串作为输入参数并返回另一个字符串。我可以使用带有以下请求的测试工具来调用Web方法。

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <GetData xmlns="http://tempuri.org/">
      <value>Enter my value</value>
    </GetData>
  </s:Body>
</s:Envelope>

我是否可以获得一些有关如何在C#windows应用程序中调用相同内容的帮助,而无需使用代理引用和使用端点详细信息。 (实施例:HTTP:// mymachine上:1415 / MyService.svc)

1 个答案:

答案 0 :(得分:3)

using (WebClient wc = new WebClient())
{
     var result = wc.UploadString("http://localhost.:1415/MyService.svc", request);
}

修改

XNamespace s = "http://schemas.xmlsoap.org/soap/envelope/";
XNamespace tempUri = "http://tempuri.org/";

var xDoc = new XDocument(
                    new XElement(
                        s + "Envelope",
                        new XAttribute(XNamespace.Xmlns + "s", s),
                        new XElement(
                            s + "Body",
                            new XElement(
                                tempUri+ "GetData",
                                new XElement(tempUri + "value","Enter my value")
                            )
                        )
                    )
                );

var request = xDoc.ToString();