获取银行货币汇率的

二次信任 提交于 2019-11-26 19:22:49

这个主要公司做外贸的每天都需要更新汇率,本来以前有一个服务可以调用,但是那个连接用不了 所以就写了一个这样的东西 套取网页显示信息

 

class ExchangeRate
    {

        private const string _BASEURL = "网页地址";
        
public  const string CURRENCYCODE = "货币类型以'|'隔开";//货币类型

        
public Hashtable GetValues()
        {
            Hashtable htReturn 
= new Hashtable();

            
string url = _BASEURL; //+ HttpUtility.UrlEncode(tmSet.ToString("yyyy/MM/dd", DateTimeFormatInfo.InvariantInfo));

            WebClient wc 
= new WebClient();
            
string sHtml = wc.DownloadString(url);
            
string sXml = string.Empty;
            
int iValueCnt = CURRENCYCODE.Split(new char[] { '|' }, 10, StringSplitOptions.RemoveEmptyEntries).Length;
            
string[] sTBody = sHtml.Split(new string[] { "<tbody>""</tbody>" }, StringSplitOptions.RemoveEmptyEntries);
            
foreach (string ss in sTBody)
            {
                
if (ss.Contains("Currency Name"))
                {
                    
string[] sbrs = ss.Split(new string[] { "</tr>" }, StringSplitOptions.RemoveEmptyEntries);
                    
foreach (string sbr in sbrs)
                    {
                        
string scur = string.Empty;
                        
double dRate = GetCurrencyRate(sbr, out scur);

                        
if (dRate != 0.0 && !string.IsNullOrEmpty(scur))
                        {
                            htReturn.Add(scur, dRate 
* 0.01);
                            
if (htReturn.Count >= iValueCnt)
                                
break;
                        }
                    }
                    
break;
                }
            }


            
return htReturn;
        }

        
private double GetCurrencyRate(string source, out string sCurrency)
        {
            sCurrency 
= string.Empty;

            
string sPattern = @"<td.+?>(.+?)</td>";
            
foreach (Match m in Regex.Matches(source, sPattern))
            {
                
string ss = m.Groups[1].Value;
                
if (IsNumeric(ss))
                    
return double.Parse(ss);
                
else
                {
                    
if (CURRENCYCODE.Contains(ss))
                        sCurrency 
= ss.Trim();
                    
else
                        
break;
                }
            }

            
return 0.0;
        }

        
public static bool IsNumeric(string str)
        {
            
if (string.IsNullOrEmpty(str)) return false;

            System.Text.RegularExpressions.Regex reg 
= new System.Text.RegularExpressions.Regex(@"^[-]?\d+[.|,]?\d*$");
            
return reg.IsMatch(str);
        }
    }

转载于:https://www.cnblogs.com/xiaoshuai/archive/2010/06/17/1759736.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!