zoukankan      html  css  js  c++  java
  • 302重定向,MVC中的Get,Post请求。

    1.在访问页遇到重定向,Get,Post跳转处理,在跳转后的页面获取访问端的IP,他们的IP是否发生变化。。。

    2.重定向处理后获取的IP还是访问端IP,而用Get,Post请求处理后,获取的访问端IP则是处理页的IP。

    3.获取客户端IP的代码

       public string GetClientIP()
            {
                HttpContext current = HttpContext.Current;
                string userHostAddress = string.Empty;
                if (current != null)
                {
                    if ((current.Session != null) && (current.Session["cnki_sys_user_remote_addr"] != null))
                    {
                        userHostAddress = current.Session["cnki_sys_user_remote_addr"].ToString();
                        if (!string.IsNullOrEmpty(userHostAddress))
                        {
                            return userHostAddress;
                        }
                    }
                    userHostAddress = "127.0.0.1";
                    userHostAddress = current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                    if (string.IsNullOrEmpty(userHostAddress))
                    {
                        userHostAddress = current.Request.ServerVariables["REMOTE_ADDR"];
                        if (string.IsNullOrEmpty(userHostAddress))
                        {
                            userHostAddress = current.Request.UserHostAddress;
                        }
                    }
                    else
                    {
                        string[] strArray = userHostAddress.Split(new char[] { ',' });
                        if ((strArray.Length > 1) && !string.IsNullOrEmpty(strArray[strArray.Length - 1]))
                        {
                            userHostAddress = strArray[strArray.Length - 1];
                        }
                    }
                    if (current.Session != null)
                    {
                        current.Session["cnki_sys_user_remote_addr"] = userHostAddress;
                    }
                }
                return userHostAddress;
            }

    4.向mvcapi中发出的Post和Get请求,以及返回信息的接收和处理代码。

     public class ECPManage
        {
            public Result GetResultFromConfig(string config, params string[] para)//config是mvcapi的处理路径,para是参数。
            {
                string getUidUrl = string.Format(ConfigurationManager.AppSettings[config], para);
                string retJSON = SendGet(getUidUrl).TrimStart("?(".ToCharArray()).TrimEnd(')');
                using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(retJSON)))
                {
                    System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Result));
                    Result t = (Result)serializer.ReadObject(ms);
                    return t;
                }
            }
            /// <summary>
            /// 发送post请求,返回信息
            /// </summary>
            /// <param name="uri"></param>
            /// <param name="data"></param>
            /// <param name="encoding"></param>
            /// <returns></returns>
            public string SendPost(string uri, string data, string encoding = "utf8")
            {
                using (WebClient wCient = new WebClient())
                {
                    if ("utf8" == encoding)
                    {
                        wCient.Encoding = Encoding.UTF8;
                    }
                    else
                    {
                        wCient.Encoding = Encoding.Default;
                    }
                    return wCient.UploadString(uri, data);
                }
            }
            /// <summary>
            /// 发送get请求,返回信息
            /// </summary>
            /// <param name="uri"></param>
            /// <param name="encoding"></param>
            /// <returns></returns>
            public string SendGet(string uri, string encoding = "utf8")
            {
                using (WebClient wCient = new WebClient())
                {
                    if ("utf8" == encoding)
                    {
                        wCient.Encoding = Encoding.UTF8;
                    }
                    else
                    {
                        wCient.Encoding = Encoding.Default;
                    }
                    return wCient.DownloadString(uri);
                }
            }
        }

  • 相关阅读:
    JAVA
    JAVA
    软件工程概论
    大道至简杂记
    InvokeRequired和Invoke
    C#代码:用事件模式实现通知
    VS 2012 C#快捷键
    error LNK2026: 模块对于 SAFESEH 映像是不安全的
    写EXCEL(csv 可以用EXECEL打开,逗号分列隔符)
    防止界面卡顿
  • 原文地址:https://www.cnblogs.com/SamllBaby/p/4784672.html
Copyright © 2011-2022 走看看