Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data

        static string GetLotteryByPhase(string phaseNo)
        {
            // Set the url and charset
            string url = "http://baidu.lecai.com/lottery/draw/ajax_get_detail.php?lottery_type=50&phase=" + phaseNo;
            string charset = "gb2312";

            dynamic lotteryObj = null;
            JArray redBalls = null;
            JArray blueBall = null;
            string lotteryStr = GetValueFromWeb(url, charset);
            try
            {
                // Deserialize the json string
                lotteryObj = JsonConvert.DeserializeObject(lotteryStr);

                // Get the expected data from json structure 
                redBalls = lotteryObj.data.result.result[0].data;
                blueBall = lotteryObj.data.result.result[1].data;
            }
            catch (Exception)
            {
                return string.Empty;
            }

            StringBuilder sb = new StringBuilder();
            // Get the value from JToken by convrting the JArray to int array
            int[] items = redBalls.Select(jv => (int)jv).ToArray();

            foreach (int item in items)
            {
                sb.Append(item.ToString());
                sb.Append(", ");
            }

            // Get the value from JToken directly
            string blueBallStr = ((int)blueBall[0]).ToString();
            sb.Append(blueBallStr);

            return sb.ToString(); ;
        }

        // Retrieve data by sending http web request
        public static string GetValueFromWeb(string Url, string CharSet)
        {
            string resultData = string.Empty;

            try
            {
                // Set HttpWebRequest's header
                HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create(Url);
                wReq.UserAgent = "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
                wReq.ContentType = "application/x-www-form-urlencoded";
                wReq.Accept = "*/*";
                wReq.KeepAlive = true;
                wReq.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");

                // Get and read the response
                WebResponse wResp = wReq.GetResponse();
                Stream respStream = wResp.GetResponseStream();
                StreamReader reader = new StreamReader(respStream, Encoding.GetEncoding(CharSet));

                resultData = reader.ReadToEnd();

                return resultData;
            }
            catch
            {
                return resultData;
            }
        }

 

你可能感兴趣的:(Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data)