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()); }
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('&')); }
/// <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>(); }