2015-08-14 4 views
1

Я использовал этот код в последние годы, однако Google, похоже, изменил некоторые из своих ссылок. По некоторым причинам я получаю это сообщение об ошибке:Google Currency Converter

«Строка ввода не в правильном формате».

в следующей строке:

decimal rate = System.Convert.ToDecimal(match.Groups[1].Value); 

Мой код:

try 
{ 
    WebClient web = new WebClient(); 
    string url = string.Format("https://www.google.com/finance/converter?a={2}&from={0}&to={1}", fromCurrency.ToUpper(), toCurrency.ToUpper(), amount); 

    string response = web.DownloadString(url); 

    Regex regex = new Regex("rhs: \\\"(\\d*.\\d*)"); 
    Match match = regex.Match(response); 
    decimal rate = System.Convert.ToDecimal(match.Groups[1].Value); 

    return rate; 
} 
catch 
{ 
    return 0; 
} 

ответ

7

вам не нравится такой подход, но получить это работу.

WebClient web = new WebClient(); 
string url = string.Format("https://www.google.com/finance/converter?a={2}&from={0}&to={1}", fromCurrency.ToUpper(), toCurrency.ToUpper(), amount); 

string response = web.DownloadString(url); 

var split = response.Split((new string[] { "<span class=bld>"}),StringSplitOptions.None); 
var value = split[1].Split(' ')[0]; 
decimal rate = decimal.Parse(value,CultureInfo.InvariantCulture); 
+0

Строка ввода не в правильном формате. - та же ошибка:/ –

+0

@MarkFenech проверить мой отредактированный ответ –

+0

это сработало! Спасибо ... если я могу спросить, почему мне не нравится такой подход? –