请求地址 ///是否需要压缩 ///接" />
当前位置:文档之家› C#Get请求区分http和https地址并压缩返回结果防止数据流截断

C#Get请求区分http和https地址并压缩返回结果防止数据流截断

///<summary>
///请求数据
///</summary>
///<param name="Url">请求地址</param>
///<param name="Gzip">是否需要压缩</param>
///<returns>接口返回信息</returns>
privatestring GetRequest(string Url, bool Gzip)
{
HttpWebRequest request = null;
Encoding srcEncoding = Encoding.Default;
Encoding dstEncoding = Encoding.Default;
if (Url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
request = WebRequest.Create(Url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10; //http版本,默认是1.1,这里设置为1.0
}
else
{
request = WebRequest.Create(Url) as HttpWebRequest;
}
if (Gzip)
request.Headers.Add("Accept-Encoding", "gzip");
request.ContentType = "application/json";
request.Method = "GET";
request.ReadWriteTimeout = 10000;//设置写入或读取流时的超时
string Result = string.Empty;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.ContentEncoding.ToLower().Contains("gzip"))
{
using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReader reader = new StreamReader(stream))
{
Result = reader.ReadToEnd();
}
}
}
elseif (response.ContentEncoding.ToLower().Contains("deflate"))
{
using (DeflateStream stream = new DeflateStream(response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
Result = reader.ReadToEnd();
}
}
}
else
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
Result = reader.ReadToEnd();
}
}
}
response.Close();
byte[] srcbytes = srcEncoding.GetBytes(Result);
byte[] dstbytes = System.Text.Encoding.Convert(srcEncoding, dstEncoding, srcbytes); Result = dstEncoding.GetString(dstbytes);
return Result;
}。

相关主题