/// <summary> /// 根据编码类型获取请求参数。对于POST不解码,因为POST可以传递中文。 /// 通常使用此方法。 /// </summary> /// <remarks> /// 2009.8.18 zhineng.li created /// </remarks> /// <param name="request">当前请求的request对象</param> /// <param name="encode">编码枚举值</param> /// <returns>键为参数名,值为参数值的NameValue集合</returns> public static NameValueCollection GetRequestParameters(HttpRequest request, EEncodingType encoding) { NameValueCollection result = null; Encoding destEncode = null; //获取指定编码格式的Encoding对象 try { //获取指定的编码格式 destEncode = Encoding.GetEncoding((int)encoding); } catch { //如果获取指定编码格式失败,则使用默认的编码类型 destEncode = Encoding.GetEncoding(0); } //根据不同的HttpMethod方式,获取请求的参数.如果是POST则不进行编码。 if (request.HttpMethod == "POST") { result = request.Form; } else { result = System.Web.HttpUtility.ParseQueryString(request.Url.Query, destEncode); } //返回结果 return(result); }
public static Encoding Get(EEncodingType type) { return(type switch { EEncodingType.Ascii => AsciiEncoding, EEncodingType.Latin1 => Latin1Encoding, EEncodingType.Utf8 => Utf8Encoding, _ => throw new ArgumentOutOfRangeException(nameof(type), type, null) });
public static int Write(this EndianBinaryWriter writer, string str, EEncodingType encodingType, bool nullTerminated = false) { var buffer = Enc.Enc.Get(encodingType).GetBytes(str); if (nullTerminated) { Array.Resize(ref buffer, buffer.Length + 1); } writer.Write(buffer); return(buffer.Length); }
public static BeamAtomsChunk Read(EndianBinaryReader reader, EEncodingType encodingType) { var atomsCount = reader.ReadUInt32(); var atoms = new string[atomsCount]; for (int i = 0; i < atomsCount; i++) { var atomLen = reader.ReadByte(); atoms[i] = reader.ReadString(atomLen, encodingType); } return(new BeamAtomsChunk() { Atoms = atoms, EncodingType = encodingType }); }
public static TermAtom Read(BinaryReader reader, EEncodingType encType, ETermSize size) { var enc = Enc.Enc.Get(encType); var len = size switch { ETermSize.Small => reader.ReadByte(), ETermSize.Large => reader.ReadUInt16(), _ => throw new NotSupportedException(), }; var atomBytes = reader.ReadBytes(len); var atom = enc.GetString(atomBytes); return(new TermAtom() { EncodingType = encType, Atom = atom }); }
public static NameValueCollection GetParameters(string _requestString, EEncodingType encoding) { NameValueCollection result = null; Encoding destEncode = null; //获取指定编码格式的Encoding对象 try { //获取指定的编码格式 destEncode = Encoding.GetEncoding((int)encoding); } catch { //如果获取指定编码格式失败,则使用默认的编码类型 destEncode = Encoding.GetEncoding(0); } //按照指定编码类型进行解码 result = System.Web.HttpUtility.ParseQueryString(_requestString, destEncode); return(result); }
public static string ReadString(this EndianBinaryReader reader, int bytesCount, EEncodingType encodingType) { var enc = Enc.Enc.Get(encodingType); var bytes = reader.ReadBytes(bytesCount); return(enc.GetString(bytes)); }
/// <summary> /// 根据编码类型获取请求参数。对于POST请求同样解码。 /// </summary> /// <remarks> /// 2009.8.18 zhineng.li created /// </remarks> /// <param name="request">当前请求的request对象</param> /// <param name="encode">编码枚举值</param> /// <returns>键为参数名,值为参数值的NameValue集合</returns> public static NameValueCollection GetRequestParametersDecode(HttpRequest request, EEncodingType encoding) { NameValueCollection result = null; Encoding destEncode = null; //获取指定编码格式的Encoding对象 try { //获取指定的编码格式 destEncode = Encoding.GetEncoding((int)encoding); } catch { //如果获取指定编码格式失败,则使用默认的编码类型 destEncode = Encoding.GetEncoding(0); } //根据不同的HttpMethod方式,获取请求的参数.如果没有Encoding对象则使用服务器端默认的编码. if (request.HttpMethod == "POST") { Stream resStream = request.InputStream; byte[] filecontent = new byte[resStream.Length]; resStream.Read(filecontent, 0, filecontent.Length); string postquery = destEncode.GetString(filecontent); result = HttpUtility.ParseQueryString(postquery, destEncode); } else { result = System.Web.HttpUtility.ParseQueryString(request.Url.Query, destEncode); } //返回结果 return(result); }