예제 #1
0
        /// <summary>
        /// 获取网页数据
        /// </summary>
        /// <param name="url">网站地址</param>
        /// <param name="encoding">编码</param>
        /// <param name="method">发送方法</param>
        public JsonData GetJsonData(string url, HttpHeader header, List <RequestHeader> requestHeaderList)
        {
            HttpWebRequest  request;
            HttpWebResponse response;

            request = WebRequest.Create(url) as HttpWebRequest;

            request.Method = header.Method;
            if (header.UseAutomaticDecompression)
            {
                request.AutomaticDecompression = DecompressionMethods.GZip;
            }
            if (!string.IsNullOrEmpty(header.ContentType))
            {
                request.ContentType = header.ContentType;
            }
            if (header.ContentLength >= 0)
            {
                request.ContentLength = header.ContentLength;
            }
            request.KeepAlive = true;
            if (m_cookieContainer != null)
            {
                request.CookieContainer = m_cookieContainer;
            }
            if (header.MaxTry > 0)
            {
                request.ServicePoint.ConnectionLimit = header.MaxTry;
            }
            if (string.IsNullOrEmpty(header.Accept) == false)
            {
                request.Accept = header.Accept;
            }
            if (string.IsNullOrEmpty(header.UserAgent) == false)
            {
                request.UserAgent = header.UserAgent;
            }
            if (string.IsNullOrEmpty(header.Referer) == false)
            {
                request.Referer = header.Referer;
            }
            if (requestHeaderList != null && requestHeaderList.Count > 0)
            {
                foreach (RequestHeader requestHeader in requestHeaderList)
                {
                    if (requestHeader.KeyIsEnum)
                    {
                        request.Headers.Add(requestHeader.Header, requestHeader.Value);
                    }
                    else
                    {
                        request.Headers.Add(requestHeader.HeaderKey, requestHeader.Value);
                    }
                }
            }

            if (string.IsNullOrEmpty(header.Param) == false)
            {
                byte[] paramData = header.Encoding.GetBytes(header.Param);
                request.ContentLength = paramData.Length;
                using (Stream sm = request.GetRequestStream())
                {
                    sm.Write(paramData, 0, paramData.Length);
                    sm.Close();
                }
            }

            try
            {
                //获取服务器返回的资源
                using (response = (HttpWebResponse)request.GetResponse())
                {
                    JsonData jsonData = new JsonData();
                    jsonData.StatusCode = response.StatusCode;
                    using (StreamReader reader = new StreamReader(response.GetResponseStream(), header.Encoding))
                    {
                        jsonData.JsonString = reader.ReadToEnd();
                    }

                    return(jsonData);
                }
            }
            catch (WebException e)
            {
                using (WebResponse response1 = e.Response)
                {
                    HttpWebResponse httpResponse = (HttpWebResponse)response1;
                    Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
                    using (Stream data = response1.GetResponseStream())
                        using (var reader = new StreamReader(data))
                        {
                            JsonData jsonData = new JsonData();
                            jsonData.StatusCode = httpResponse.StatusCode;
                            jsonData.JsonString = reader.ReadToEnd();

                            return(jsonData);
                        }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #2
0
 /// <summary>
 /// 获取网页数据
 /// </summary>
 /// <param name="url">网站地址</param>
 /// <param name="encoding">编码</param>
 /// <param name="method">发送方法</param>
 public JsonData GetJsonData(string url, HttpHeader header)
 {
     return(GetJsonData(url, header, null));
 }