• C#-Code:GET/POST


    ylbtech-C#-Code:GET/POST
    1.返回顶部
    ·调用方法
    #region 应用授权
    #region 应用授权_获取知识管理授权
    public string GetAuthenticate_Confluence(UserInfo user)
    {
        string res = "0";
    
        string uri = "http://crowd.sp.com/crowd/rest/usermanagement/latest/session?validate-password=false";
        string username = "sppdm-crowd";
        string password = "spPdm";
    
        string uid = string.Empty;
        #region 获取统一ID
        var userInfo = repo.GetUserInfo(user.Username);
        string email = userInfo.Email;
        if (email != null)
            uid = email.Substring(0, email.IndexOf('@'));
        #endregion
        string paramStr = "{"username":"" + uid + ""}";
        string xml = CrowdAuthentication.Request_WebClient(uri, paramStr, Encoding.ASCII, username, password);
        TokenInfo token = CrowdAuthentication.GetTokenInfo(xml);
        if (token.Token != "0")
        {
            HttpContext.Current.Response.Cookies.Add(new HttpCookie("pcitc.crowd.token") { Value = token.Token, Domain = ".pcitc.com", Expires = token.ExpiryDate });
            res = "1";
        }
        return res;
    }
    #endregion
    #endregion
    ·CrowdAuthentication.cs
    using System;
    using System.Net;
    using System.Text;
    using System.Xml;
    
    namespace SP.Common
    {
        /// <summary>
        /// Crowd身份验证
        /// </summary>
        public class CrowdAuthentication
        {
            public CrowdAuthentication()
            {
                // Class constructor.
            }
    
            /// <summary>
            /// 通过WebClient类Post数据到远程地址,需要Basic认证;
            /// 调用端自己处理异常
            /// </summary>
            /// <param name="uri"></param>
            /// <param name="paramStr">name=张三&age=20|{"username":"fuchao.zhang"}</param>
            /// <param name="encoding">请先确认目标网页的编码方式</param>
            /// <param name="username"></param>
            /// <param name="password"></param>
            /// <returns></returns>
            public static string Request_WebClient(string uri, string paramStr, Encoding encoding, string username, string password)
            {
                if (encoding == null)
                    encoding = Encoding.UTF8;
    
                string result = string.Empty;
    
                WebClient wc = new WebClient();
    
                // 采取POST方式必须加的Header
                wc.Headers.Add("Content-Type", "application/json");
    
                byte[] postData = encoding.GetBytes(paramStr);
    
                if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
                {
                    wc.Credentials = GetCredentialCache(uri, username, password);
                    wc.Headers.Add("Authorization", GetAuthorization(username, password));
                }
    
                byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流
                return encoding.GetString(responseData);// 解码                  
            }
    
            #region # 生成 Http Basic 访问凭证 #
    
            private static CredentialCache GetCredentialCache(string uri, string username, string password)
            {
                string authorization = string.Format("{0}:{1}", username, password);
    
                CredentialCache credCache = new CredentialCache();
                credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));
    
                return credCache;
            }
    
            private static string GetAuthorization(string username, string password)
            {
                string authorization = string.Format("{0}:{1}", username, password);
    
                return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
            }
    
            #endregion
    
            #region 获取Token
            public static TokenInfo GetTokenInfo(string xml)
            {
                TokenInfo token = new TokenInfo() { Token = "0" };
    
                XmlDocument xmlDocMeta = new XmlDocument();
                xmlDocMeta.LoadXml(xml);
                XmlNode node = null;
                node = xmlDocMeta.DocumentElement.SelectSingleNode("token");
                if (node != null)
                    token.Token = node.InnerText;
                node = xmlDocMeta.DocumentElement.SelectSingleNode("expiry-date");
                if (node != null)
                    token.ExpiryDate = Convert.ToDateTime(node.InnerText);
    
                return token;
            }
            #endregion
        }
    
        /// <summary>
        /// Token信息
        /// </summary>
        public class TokenInfo {
    
            /// <summary>
            /// 令牌
            /// </summary>
            public string Token { get; set; }
            /// <summary>
            /// 有效期
            /// </summary>
            public DateTime ExpiryDate { get; set; }
        }
    
    }
    View Code
    ·xml.xml
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <session expand="user">
      <token>m81nU03Kyni8DfOewvNcVg00</token>
      <user name="bo.yuan">
        <link href="http://crowd.sp.com/crowd/rest/usermanagement/latest/user?username=bo.yuan" rel="self"/>
      </user>
      <link href="http://crowd.sp.com/crowd/rest/usermanagement/latest/session/m81nU03Kyni8DfOewvNcVg00" rel="self"/>
      <created-date>2020-12-08T09:33:52+08:00</created-date>
      <expiry-date>2020-12-10T07:17:23.305+08:00</expiry-date>
    </session>
    ·
    2.返回顶部
    ·Authentication.cs
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    
    namespace ConsoleApp
    {
        public class Authentication
        {
    
            #region POST方法(httpWebRequest)
            /// <summary>
            /// POST方法(httpWebRequest)
            /// post的cotentType填写:"application/x-www-form-urlencoded"
            /// soap填写:"text/xml; charset=utf-8"
            /// </summary>
            /// <param name="url"></param>
            /// <param name="body">body是要传递的参数,格式"roleId=1&uid=2"</param>
            /// <param name="contentType"></param>
            /// <returns></returns>
            public static string PostHttp(string url, string body, string contentType)
            {
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    
                httpWebRequest.ContentType = contentType;
                httpWebRequest.Method = "POST";
                httpWebRequest.Timeout = 20000;
    
                byte[] btBodys = Encoding.UTF8.GetBytes(body);
                httpWebRequest.ContentLength = btBodys.Length;
                httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
    
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
                string responseContent = streamReader.ReadToEnd();
    
                httpWebResponse.Close();
                streamReader.Close();
                httpWebRequest.Abort();
                httpWebResponse.Close();
    
                return responseContent;
            }
            #endregion
    
            #region POST方法(WebClient)
            /// <summary>
            /// 通过WebClient类Post数据到远程地址,需要Basic认证;
            /// 调用端自己处理异常
            /// </summary>
            /// <param name="uri"></param>
            /// <param name="paramStr">name=张三&age=20</param>
            /// <param name="encoding">请先确认目标网页的编码方式</param>
            /// <param name="username"></param>
            /// <param name="password"></param>
            /// <returns></returns>
            public static string Request_WebClient(string uri, string paramStr, Encoding encoding, string username, string password)
            {
                if (encoding == null)
                    encoding = Encoding.UTF8;
    
                string result = string.Empty;
    
                WebClient wc = new WebClient();
                // 采取POST方式必须加的Header
                wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
    
                byte[] postData = encoding.GetBytes(paramStr);
                if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
                {
                    wc.Credentials = GetCredentialCache(uri, username, password);
                    wc.Headers.Add("Authorization", GetAuthorization(username, password));
                }
    
                byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流
                return encoding.GetString(responseData);// 解码                  
            }
            #endregion
    
            #region Get方法(HttpWebRequest)
            public static string GetHttp(string url, HttpContext httpContext)
            {
                string queryString = "?";
    
                foreach (string key in httpContext.Request.QueryString.AllKeys)
                {
                    queryString += key + "=" + httpContext.Request.QueryString[key] + "&";
                }
    
                queryString = queryString.Substring(0, queryString.Length - 1);
    
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url + queryString);
    
                httpWebRequest.ContentType = "application/json";
                httpWebRequest.Method = "GET";
                httpWebRequest.Timeout = 20000;
    
                //byte[] btBodys = Encoding.UTF8.GetBytes(body);
                //httpWebRequest.ContentLength = btBodys.Length;
                //httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
    
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
                string responseContent = streamReader.ReadToEnd();
    
                httpWebResponse.Close();
                streamReader.Close();
    
                return responseContent;
            }
            #endregion
    
            #region basic验证的WebRequest/WebResponse
            /// <summary>
            /// 通过 WebRequest/WebResponse 类访问远程地址并返回结果,需要Basic认证;
            /// 调用端自己处理异常
            /// </summary>
            /// <param name="uri"></param>
            /// <param name="timeout">访问超时时间,单位毫秒;如果不设置超时时间,传入0</param>
            /// <param name="encoding">如果不知道具体的编码,传入null</param>
            /// <param name="username"></param>
            /// <param name="password"></param>
            /// <returns></returns>
            public static string Request_WebRequest(string uri, int timeout, Encoding encoding, string username, string password)
            {
                string result = string.Empty;
    
                WebRequest request = WebRequest.Create(new Uri(uri));
    
                if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
                {
                    request.Credentials = GetCredentialCache(uri, username, password);
                    request.Headers.Add("Authorization", GetAuthorization(username, password));
                }
    
                if (timeout > 0)
                    request.Timeout = timeout;
    
                WebResponse response = request.GetResponse();
                Stream stream = response.GetResponseStream();
                StreamReader sr = encoding == null ? new StreamReader(stream) : new StreamReader(stream, encoding);
    
                result = sr.ReadToEnd();
    
                sr.Close();
                stream.Close();
    
                return result;
            }
            #endregion
    
            #region # 生成 Http Basic 访问凭证 #
    
            private static CredentialCache GetCredentialCache(string uri, string username, string password)
            {
                string authorization = string.Format("{0}:{1}", username, password);
    
                CredentialCache credCache = new CredentialCache();
                credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));
    
                return credCache;
            }
    
            private static string GetAuthorization(string username, string password)
            {
                string authorization = string.Format("{0}:{1}", username, password);
    
                return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
            }
    
            #endregion
        }
    }
    View Code
    ·
    3.返回顶部
     
    4.返回顶部
     
    5.返回顶部
     
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    工具资源系列之给 windows 虚拟机装个 mac
    工具资源系列之 github 上各式各样的小徽章从何而来?
    php 学习笔记之日期时间操作一箩筐
    2018-12-03 VS Code英汉词典插件v0.0.7-尝试词性搭配
    2018-11-29 VS Code英汉词典插件v0.0.6-改为TS实现, 加测试
    2018-11-27 中文代码示例之Programming in Scala笔记第七八章
    2018-11-23 手工翻译Vue.js源码:尝试重命名标识符与文本
    2018-11-21 手工翻译Vue.js源码第一步:14个文件重命名
    2018-11-16 中文代码示例之Programming in Scala笔记第四五六章
    2018-11-13 中文代码示例之Programming in Scala学习笔记第二三章
  • 原文地址:https://www.cnblogs.com/storebook/p/14134171.html
Copyright © 2020-2023  润新知