2017-09-23 10 views
-1

私はグーグルファイナンスを使って通貨を別の通貨に変換しています。 私が使用しているコードは以下の通りで、うまくいきました。しかし、今日、私はIndexOutofrangeの例外に直面しており、以下で検索されたインデックスに対して-1の結果を得ています(これは、結果に変換後の値が含まれていないことを意味します)。C#.net WebRequestグーグルファイナンス

同じ名前のWebリクエストに同じパラメータを与え、Webブラウザからソースコードを調べて、VALUEを取得しました。

ウェブブラウザからは、全体の結果、そして私のアプリから変換された値のフィールドが欠落しています。

private static string CurrencyConvert(decimal amount, string fromCurrency, string toCurrency) 
{ 
    try 
    { 
     //Grab your values and build your Web Request to the API 
     string apiURL = String.Format("https://www.google.com/finance/converter?a={0}&from={1}&to={2}&meta={3}", amount, fromCurrency, toCurrency, Guid.NewGuid().ToString()); 

     //Make your Web Request and grab the results 
     var request = WebRequest.Create(apiURL); 

     //Get the Response 
     StreamReader streamReader = new StreamReader(request.GetResponse().GetResponseStream(), System.Text.Encoding.ASCII); 

     //Grab your converted value (ie 2.45 USD) 
     String temp = streamReader.ReadToEnd().ToString(); 
     int pFrom = temp.IndexOf("<span class=bld>") + ("<span class=bld>").Length; 
     int pTo = temp.LastIndexOf("</span>"); 

     System.Windows.MessageBox.Show(pFrom.ToString() + " " + pTo.ToString()); 
     String result = temp.Substring(pFrom, pTo - pFrom); 

     // string result = Regex.Matches(streamReader.ReadToEnd(), "<span class=\"?bld\"?>([^<]+)</span>")[0].Groups[1].Value; 

     //Get the Result 
     return result; 
    } 
    catch(Exception ex) 
    { 
     return ""; 
    } 
} 
+0

よく分かっていることは、ファイルに 'temp'を保存することです。 –

+0

@JonSkeet私はすでにそれを行っています:Dは私が言ったように私はタグなしで同じ結果を得ています –

+0

その意味。あなたの質問は、もしあなたが「ブラウザで取り出すと、私はこのHTMLを取得し、WebRequestで取り出すと、私はこのHTMLを両方見ることができます。文字列にないものを探すコードは重要ではありません。期待するHTMLが得られていないということです。 –

答えて