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);
                }
            }
        }

  • 相关阅读:
    MFC STATIC,Picture控件使用及无法添加变量的问题
    MFC listctrl NMCLICK消息 错误 无法从"NMHDR*"转换为"NMITEMACTIVATE"
    vs2008中将开始执行按钮(不调试按钮)添加至标准工具栏方法
    MFC 删除工具栏 默认对话框全屏 修改MFC标题栏的文字 删除菜单栏
    Visual Assist X设置
    MFC禁止窗口最大化按钮和禁止改变窗口大小
    MFC从头开始如何利用MFC分割窗口
    MFC CSplitterWnd窗口分割
    关于VS2008下提示microsoft incremental linker已停止工作的问题
    windows 下codeblocks查看容器值
  • 原文地址:https://www.cnblogs.com/SamllBaby/p/4784672.html
Copyright © 2011-2022 走看看