Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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/3/sql-server-2005/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# 使用C使用SOAP/SSO#_C#_.net_Soap_Single Sign On - Fatal编程技术网

C# 使用C使用SOAP/SSO#

C# 使用C使用SOAP/SSO#,c#,.net,soap,single-sign-on,C#,.net,Soap,Single Sign On,使用C#使用WSDL SOAP/SSO的最简单方法是什么 这是一个第三方系统,我得到以下回应: HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x

使用C#使用WSDL SOAP/SSO的最简单方法是什么

这是一个第三方系统,我得到以下回应:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <RetornaEstadosPorMarcaResponse xmlns="http://WebService-MultiLogin-2013/">
      <RetornaEstadosPorMarcaResult>
        <EstadosMDL>
          <ID>int</ID>
          <Nome>string</Nome>
          <Sigla>string</Sigla>
        </EstadosMDL>
        <EstadosMDL>
          <ID>int</ID>
          <Nome>string</Nome>
          <Sigla>string</Sigla>
        </EstadosMDL>
      </RetornaEstadosPorMarcaResult>
    </RetornaEstadosPorMarcaResponse>
  </soap:Body>
</soap:Envelope>
我已经尝试将其作为字符串接收,并将其格式化为XML,但由于
的原因,它无法工作。我收到一个错误,因为名称上有“:”,我认为这不是最简单的方法

那么,如何访问响应中的信息呢?还有别的办法吗

编辑:

经过几个小时的测试,我终于发现了问题,“我的”SOAP也给了我一个类来创建一个对象来接收响应,我只需要使用它:

//Here i have the object with the methods
private Library.ssoEstados.Estados objEstadosSSO = new Library.ssoEstados.Estados();

//Here i have the object to receive the response    
private Library.ssoEstados.EstadosMDL[] objEstadosMDL;
而仅仅是读取我想要的值并将其发送到我自己的对象

XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(inputXml);
XmlNamespaceManager namespaces = new XmlNamespaceManager(xDoc.NameTable);
namespaces.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
namespaces.AddNamespace("ns2", "http://tempuri.org/");
XmlNode accountNode = xDoc.SelectSingleNode("/soapenv:Envelope/soapenv:Body/ns2:RetornaEstadosPorMarcaResponse/RetornaEstadosPorMarcaResult", namespaces);
XmlNode xnlAccount = accountNode.ChildNodes[0];
if (xnlAccount != null)
{
    XmlDocument xAccount = new XmlDocument();
    xAccount.LoadXml(xnlAccount.InnerText);
}

inputXml是包含响应xml的字符串。

最好的方法是使用“添加服务引用”。请参见Hey@JohnSaunders,感谢您的帮助,我在几次测试后找到了出路,我必须创建SOAP提供的对象来接收响应。
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(inputXml);
XmlNamespaceManager namespaces = new XmlNamespaceManager(xDoc.NameTable);
namespaces.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
namespaces.AddNamespace("ns2", "http://tempuri.org/");
XmlNode accountNode = xDoc.SelectSingleNode("/soapenv:Envelope/soapenv:Body/ns2:RetornaEstadosPorMarcaResponse/RetornaEstadosPorMarcaResult", namespaces);
XmlNode xnlAccount = accountNode.ChildNodes[0];
if (xnlAccount != null)
{
    XmlDocument xAccount = new XmlDocument();
    xAccount.LoadXml(xnlAccount.InnerText);
}