Beispiel #1
0
        public static void WebHeaderSyn(RequestHeader currentHeader, NameValueCollection currentWebHeader)
        {
            #region 测试数据

            /*
             * User-Agent: EASE Proxy Client/1.0.0.0 (Microsoft Windows NT 5.2.3790 Service Pack 2; zh-CN) WANGQJ (.NET CLR 2.0.50727.3615)
             * Software-ID: 0
             * Network-ID: 3
             * Device-ID: 73
             * Device-UserAgent:
             * Encoding: 0
             * IMEI: 460030948805727
             * Free-Disk: 7309364
             * Free-Memory: 0
             * Font-Width: 22
             * Font-Height: 18
             * Cookies: ASP.NET_SessionId=wvozur55usuefl55zlzc4v55
             * Screen-Width: 0
             * Screen-Height: 0
             * Dial-up: 0
             */
            #endregion

            string strTemp = null;
            //业务编号(2010-11-10 add by Ridge)
            currentWebHeader.Set("Service-ID", currentHeader.ESP_BusinessID.ToString());

            //Software-ID 服务器分配的用户唯一识别码, 参考2.4.2
            currentWebHeader.Set("Software-ID", currentHeader.ESP_SoftwareID.ToString());

            //Network-ID 网络运营商ID, 参考2.4.3
            currentWebHeader.Set("Network-ID", currentHeader.ESP_NID.GetHashCode().ToString());

            //Device-ID 服务器分配的机型号,参考2.4.1
            currentWebHeader.Set("Device-ID", currentHeader.ESP_DID.ToString());

            strTemp = currentHeader.ESP_UserAgent.GetRawString();
            if (!string.IsNullOrEmpty(strTemp))
            {
                //设备UA(2010-9-3 ridge)
                currentWebHeader.Set("Device-UserAgent", strTemp);
            }

            strTemp = currentHeader.CellPhoneNumber;
            if (!string.IsNullOrEmpty(strTemp))
            {
                currentWebHeader.Set("MSID", strTemp);
            }

            //Encoding 客户端使用的编码格式
            currentWebHeader.Set("Encoding", currentHeader.ESP_EncodeType.GetHashCode().ToString());

            //IMEI 手机机身识别码/手机卡识别码,参考2.4.5/6
            strTemp = currentHeader.ESP_IMEI.GetRawString();
            if (!string.IsNullOrEmpty(strTemp))
            {
                currentWebHeader.Set("IMEI", strTemp);
            }

            //Free-Disk 手机端可用存储空间,单位:字节
            currentWebHeader.Set("Free-Disk", currentHeader.ESP_StoreSize.ToString());

            // Free-Memory 手机端可用内存,单位:字节
            currentWebHeader.Set("Free-Memory", currentHeader.ESP_MemorySize.ToString());

            //Font-Width 手机端字体宽度,单位:像素
            currentWebHeader.Set("Font-Width", currentHeader.ESP_FontWidth.ToString());

            //Font-Height 手机端字体高度,单位:像素
            currentWebHeader.Set("Font-Height", currentHeader.ESP_FontHeight.ToString());

            // Cookies Cookies 参考格式为:参数名1=参数1 值&……&参数名N=参数N值
            strTemp = currentHeader.ESP_Cookies.GetRawString();
            if (!string.IsNullOrEmpty(strTemp))
            {
                if (string.IsNullOrEmpty(currentWebHeader["Cookie"]))
                {
                    currentWebHeader.Set("Cookie", strTemp);
                }
                else
                {
                    currentWebHeader.Set("Cookie", currentWebHeader["Cookie"] + "; " + strTemp);
                }
            }

            //Screen-Width 手机端屏幕宽度
            currentWebHeader.Set("Screen-Width", currentHeader.ESP_ScreenWidth.ToString());

            //Screen-Height 手机端屏幕高度
            currentWebHeader.Set("Screen-Height", currentHeader.ESP_ScreenHeight.ToString());

            //Dial-up 客户端拨号方式
            currentWebHeader.Set("Dial-up", currentHeader.ESP_DailType.GetHashCode().ToString());
        }
Beispiel #2
0
        public static string HttpRequestURLSyn(RequestHeader currentHeader, string requestUrl)
        {
            System.Collections.Specialized.NameValueCollection nv = new System.Collections.Specialized.NameValueCollection(StringComparer.InvariantCultureIgnoreCase);

            StringBuilder urlBuilder = new StringBuilder();
            int           qIdx       = requestUrl.IndexOf('?');

            if (qIdx != -1)
            {
                string paramStr = requestUrl.Substring(qIdx + 1);
                urlBuilder.Append(requestUrl.Substring(0, qIdx) + "?");

                string[] subParams = paramStr.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
                string[] kvPairs   = new string[2];
                foreach (string crtParam in subParams)
                {
                    kvPairs = crtParam.Split('=');
                    if (kvPairs.Length == 2)
                    {
                        nv.Set(kvPairs[0], kvPairs[1]);
                    }
                    else
                    {
                        //TODO?
                        nv.Set(crtParam, crtParam);
                    }
                }
            }

            if (!nv.HasKeys())
            {
                urlBuilder.Append(requestUrl + "?");
            }
            #region 参数附加

            /*
             * 参数名 参数说明
             * sid 参考2.4.2
             * imei 参考2.4.5
             * imsi 参考2.4.6
             * nid 参考2.4.3
             * did 参考2.4.1
             * dtd 拨号方式说明:
             *         0-CTNET
             *         1-CTWAP
             */
            nv.Set("sid", currentHeader.ESP_SoftwareID.ToString());
            nv.Set("imei", currentHeader.ESP_IMEI.GetRawString());
            nv.Set("imsi", currentHeader.ESP_IMEI.GetRawString()); //??
            nv.Set("nid", currentHeader.ESP_NID.GetHashCode().ToString());
            nv.Set("did", currentHeader.ESP_DID.ToString());
            nv.Set("dtd", currentHeader.ESP_DailType.GetHashCode().ToString());
            #endregion

            foreach (string key in nv.AllKeys)
            {
                urlBuilder.AppendFormat("{0}={1}&", key, nv[key]);
            }

            return(urlBuilder.ToString().TrimEnd('&'));
        }
Beispiel #3
0
 /// <summary>
 /// 填充绑定词典
 /// </summary>
 public override void CustomPropertyBindAction()
 {
     //ParamsCount : 18, 20, 21
     BindBuilder.Instance()
     .Add((RequestHeader h) => h.ESP_ScreenWidth,      //屏幕宽度
          (s, p, obj) =>
     {
         RequestHeader instance  = (RequestHeader)obj;
         PropertyBindState state = new PropertyBindState();
         if (instance.ESP_ParamsCount > 18)
         {
             state.StreamBind         = true;
             instance.ESP_ScreenWidth = s.ReadNetworkStreamAsEntity <short>(2);
             state.PropertyValue      = instance.ESP_ScreenWidth;
         }
         return(state);
     })
     .Add((RequestHeader h) => h.ESP_ScreenHeight,       //屏幕高度
          (s, p, obj) =>
     {
         RequestHeader instance  = (RequestHeader)obj;
         PropertyBindState state = new PropertyBindState();
         if (instance.ESP_ParamsCount > 18)
         {
             state.StreamBind          = true;
             instance.ESP_ScreenHeight = s.ReadNetworkStreamAsEntity <short>(2);
             state.PropertyValue       = instance.ESP_ScreenHeight;
         }
         return(state);
     })
     .Add((RequestHeader h) => h.ESP_DID,       //设备ID
          (s, p, obj) =>
     {
         RequestHeader instance  = (RequestHeader)obj;
         PropertyBindState state = new PropertyBindState();
         if (instance.ESP_SuccessFlag == EaseSuccessFlag.Success ||
             instance.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind    = true;
             instance.ESP_DID    = s.ReadNetworkStreamAsEntity <int>(4);
             state.PropertyValue = instance.ESP_DID;
         }
         return(state);
     })
     .Add((RequestHeader h) => h.ESP_UserAgent,       //设备UserAgent(2010-9-2, Ridge)
          (s, p, obj) =>
     {
         RequestHeader instance  = (RequestHeader)obj;
         PropertyBindState state = new PropertyBindState();
         if (instance.ESP_SuccessFlag == EaseSuccessFlag.SuccessUserAgent)
         {
             state.StreamBind       = true;
             instance.ESP_UserAgent = s.ReadNetworkStreamAsEntity <EaseString>();
             state.PropertyValue    = instance.ESP_UserAgent;
         }
         return(state);
     }).Add((RequestHeader h) => h.ESP_DailType,       //拨号方式
            (s, p, obj) =>
     {
         RequestHeader instance  = (RequestHeader)obj;
         PropertyBindState state = new PropertyBindState();
         if (instance.ESP_ParamsCount > 20)
         {
             state.StreamBind      = true;
             instance.ESP_DailType = s.ReadNetworkStreamAsEntity <ClientDialType>(1);
             state.PropertyValue   = instance.ESP_DailType;
         }
         return(state);
     })
     .Add((RequestHeader h) => h.ESP_Protocol,       //请求功能号
          (s, p, obj) =>
     {
         RequestHeader instance  = (RequestHeader)obj;
         PropertyBindState state = new PropertyBindState();
         instance.ESP_Protocol   = s.ReadNetworkStreamAsEntity <RequestType>(1);
         state.PropertyValue     = instance.ESP_Protocol;
         state.StreamBind        = true;
         return(state);
     })
     .End <RequestHeader>();
 }