⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ticketacquirer.cs

📁 .net 获取msn联系人名单(转载) windows ApI
💻 CS
字号:
// Code by MSDN 
// http://msdn2.microsoft.com/en-us/library/bb447721.aspx

using System.IO;
using System.Net;
using System.Text;
using System.Xml;

namespace OpenContactsNet
{
    internal class TicketAcquirer
    {
        private const string applicationId = "10"; // An arbitrary value that will be defined in the next non-alpha release

        public string GetTicket( NetworkCredential credentail )
        {
            string soapEnvelope =
                @"<s:Envelope
    xmlns:s = ""http://www.w3.org/2003/05/soap-envelope""
    xmlns:wsse = ""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd""
    xmlns:saml = ""urn:oasis:names:tc:SAML:1.0:assertion""
    xmlns:wsp = ""http://schemas.xmlsoap.org/ws/2004/09/policy""
    xmlns:wsu = ""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd""
    xmlns:wsa = ""http://www.w3.org/2005/08/addressing""
    xmlns:wssc = ""http://schemas.xmlsoap.org/ws/2005/02/sc""
    xmlns:wst = ""http://schemas.xmlsoap.org/ws/2005/02/trust"">
    <s:Header>
        <wlid:ClientInfo xmlns:wlid = ""http://schemas.microsoft.com/wlid"">
            <wlid:ApplicationID>" + applicationId + @"</wlid:ApplicationID>
        </wlid:ClientInfo>
        <wsa:Action s:mustUnderstand = ""1"">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</wsa:Action>
        <wsa:To s:mustUnderstand = ""1"">https://dev.login.live.com/wstlogin.srf</wsa:To>
        <wsse:Security>
            <wsse:UsernameToken wsu:Id = ""user"">
                <wsse:Username>" + credentail.UserName + @"</wsse:Username>
                <wsse:Password>" + credentail.Password + @"</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    </s:Header>
    <s:Body>
        <wst:RequestSecurityToken Id = ""RST0"">
            <wst:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</wst:RequestType>
            <wsp:AppliesTo>
                <wsa:EndpointReference>
                    <wsa:Address>http://live.com</wsa:Address>
                </wsa:EndpointReference>
            </wsp:AppliesTo>
            <wsp:PolicyReference URI = ""MBI""></wsp:PolicyReference>
        </wst:RequestSecurityToken>
    </s:Body>
</s:Envelope>";

            const string url = @"https://dev.login.live.com/wstlogin.srf";
            WebRequest request = WebRequest.Create( url );
            request.Method = "POST";
            request.ContentType = "application/soap+xml; charset=UTF-8";
            request.Timeout = 10 * 1000; // Wait for at most 10 seconds
            byte[] bytes = Encoding.UTF8.GetBytes( soapEnvelope );
            request.GetRequestStream().Write( bytes, 0, bytes.Length );
            request.GetRequestStream().Close();
            WebResponse response;
            response = request.GetResponse();
            string xml;
            using ( StreamReader reader = new StreamReader( response.GetResponseStream() ) )
            {
                xml = reader.ReadToEnd();
            }
            response.Close();
            XmlDocument document = new XmlDocument();
            document.LoadXml( xml );
            XmlNamespaceManager nsManager = new XmlNamespaceManager( document.NameTable );
            nsManager.AddNamespace( "wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" );
            XmlNode node = document.SelectSingleNode( @"//wsse:BinarySecurityToken/text()", nsManager );
            if ( node == null )
            {
                return null; // The wsse:BinarySecurityToken element is missing. Examine the xml for error information
            }
            else
            {
                return node.Value;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -