我遇到的问题是我的Yahoo Finance API无法在我的代码中运行。我正在创建一个实时货币转换器。我检查了谷歌但似乎没有回答我的问题。当我在我的应用程序中按“计算”按钮时,没有任何反应。这是我输入的代码。
public interface CurrencyConverter {
public double convert(String currencyFrom, String currencyTo) throws Exception;
}
public class YahooCurrencyConverter implements CurrencyConverter{
public double convert(String currencyFrom, String currencyTo) throws IOException {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://quote.yahoo.com/d/quotes.csv?s=" + currencyFrom + currencyTo + "=X&f=l1&e=.csv");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpGet, responseHandler);
httpclient.getConnectionManager().shutdown();
return Double.parseDouble(responseBody);
}
}
public void convertDollarstoEuros(){
double current;
double val = Double.parseDouble(edittextdollars.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
YahooCurrencyConverter ycc = new YahooCurrencyConverter();
try {
current = ycc.convert("USD", "EUR");
edittexteuros.setText(df.format(val*current));
}
catch (Exception e) {
e.printStackTrace();
}
}
我在我的清单文件中拥有互联网权限,并且已在我的Android SDK中安装了Google API。我的代码似乎有些问题,但我无法识别它。这是我删除try / catch方法时出现的内容:
非常感谢任何帮助。
答案 0 :(得分:0)
很可能“没有任何反应”,因为你正在捕捉所有异常。我建议您删除try...catch
块,或者至少捕获您需要处理的特定异常,并让Java异常系统为您完成剩余的工作。我强烈建议您了解有关Java异常处理系统的更多信息。 The Oracle tutorial on Exceptions是一个很好的起点。前两课将为您提供在Android编程中遇到的99%所需的基础知识。
此外,您应该检查logcat以查看是否 抛出了任何异常。
编辑:关于例外的一点
请注意,弹出消息中的某些文本为蓝色。这意味着您可以单击它,Eclipse将为您生成一些代码。我建议您点击“Surround with try / catch”并注意生成的代码与您在此处发布的代码有何不同。当您了解如何以及何时使用try / catch语句时,这是一个很好的工具。
在这种特殊情况下,我认为“添加抛出声明”是一个更好的选择。点击它,看看会发生什么。您很可能会在代码中的其他位置遇到类似的错误。您应该继续向每个不知道如何处理异常的方法添加throws声明。您应该只向一个知道在发生错误时该怎么做的方法添加一个try / catch语句。这通常在UI代码中,例如Listener方法。