public GoogleMarket(GoogleMarketServer svr)
            {
                _Svr = svr;
                try
                {
                    // Use StringBuilder instead of StringBuffer. We do not concern
                    // on thread safety.
                    StringBuilder builder = new StringBuilder("http://www.google.com/finance/info?client=ig&q=");
                    // Exception will be thrown from apache httpclient, if we do not
                    // perform URL encoding.
                    builder.Append(_Svr.codes[0].toString());
                    int size = _Svr.codes.Count;

                    for (int i = 1; i < size; i++)
                    {
                        builder.Append(",");
                        builder.Append(_Svr.codes[i].toString());
                    }
                    String location = builder.ToString();
                    String respond  = Gui.Utils.getResponseBodyAsStringBasedOnProxyAuthOption(location);
                    // Google returns "// [ { "id": ... } ]".
                    // We need to turn them into "[ { "id": ... } ]".
                    List <Dictionary <string, string> > jsonArray = mapper.readValue(Utils.GoogleRespondToJSON(respond), typeof(List <Dictionary <string, string> >));
                    List <Stock> stocks = new List <Stock>();
                    size = jsonArray.Count;
                    for (int i = 0; i < size; i++)
                    {
                        Dictionary <String, String> jsonObject = jsonArray[i];
                        double l_curr = Double.Parse(jsonObject["l_cur"].Replace(",", ""));
                        double c      = Double.Parse(jsonObject["c"].Replace(",", ""));
                        // We ignore changePricePercentage. GoogleMarket doesn't
                        // need to return this value.
                        Stock stock = new Stock.Builder(_Svr.codes[i], Symbol.newInstance(_Svr.codes[i].toString())).lastPrice(l_curr).changePrice(c).build();
                        stocks.Add(stock);
                    }
                    // Store the result for later query purpose.
                    foreach (Stock stock in stocks)
                    {
                        map.Add(_Svr.codeToIndexMap[stock.getCode()], stock);
                    }
                }
                catch (Exception ex)
                {
                    // Jackson library may cause runtime exception if there is error
                    // in the JSON string.
                    throw new StockNotFoundException(null, ex);
                }
            }
            public GoogleMarket(GoogleMarketServer svr)
            {
                _Svr = svr;
                try
                {
                    // Use StringBuilder instead of StringBuffer. We do not concern
                    // on thread safety.
                    StringBuilder builder = new StringBuilder("http://www.google.com/finance/info?client=ig&q=");
                    // Exception will be thrown from apache httpclient, if we do not
                    // perform URL encoding.
                    builder.Append(_Svr.codes[0].toString());
                    int size = _Svr.codes.Count;

                    for (int i = 1; i < size; i++)
                    {
                        builder.Append(",");
                        builder.Append(_Svr.codes[i].toString());
                    }
                    String location = builder.ToString();
                    String respond = Gui.Utils.getResponseBodyAsStringBasedOnProxyAuthOption(location);
                    // Google returns "// [ { "id": ... } ]".
                    // We need to turn them into "[ { "id": ... } ]".
                    List<Dictionary<string, string>> jsonArray = mapper.readValue(Utils.GoogleRespondToJSON(respond), typeof(List<Dictionary<string, string>>));
                    List<Stock> stocks = new List<Stock>();
                    size = jsonArray.Count;
                    for (int i = 0; i < size; i++)
                    {
                        Dictionary<String, String> jsonObject = jsonArray[i];
                        double l_curr = Double.Parse(jsonObject["l_cur"].Replace(",", ""));
                        double c = Double.Parse(jsonObject["c"].Replace(",", ""));
                        // We ignore changePricePercentage. GoogleMarket doesn't
                        // need to return this value.
                        Stock stock = new Stock.Builder(_Svr.codes[i], Symbol.newInstance(_Svr.codes[i].toString())).lastPrice(l_curr).changePrice(c).build();
                        stocks.Add(stock);
                    }
                    // Store the result for later query purpose.
                    foreach (Stock stock in stocks)
                    {
                        map.Add(_Svr.codeToIndexMap[stock.getCode()], stock);
                    }
                }
                catch (Exception ex)
                {
                    // Jackson library may cause runtime exception if there is error
                    // in the JSON string.
                    throw new StockNotFoundException(null, ex);
                }
            }