我正在尝试制作一个新应用程序,我想获得股票更新、货币兑换更新等。我已经尝试过 Google Finance API。不使用的原因:已弃用并即将关闭,这将使我的应用程序过时。
然后我转到雅虎财经,发现http://learnandroidfast.blogspot.in/2012/02/yql-open-api.html。
这是我的代码:
/*
* To convert the InputStream to String we use the
* BufferedReader.readLine() method. We iterate until the BufferedReader
* return null which means there's no more data to read. Each line will
* appended to a StringBuilder and returned as String.
*/
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
/*
* This is a test function which will connects to a given rest service and
* prints it's response to Android Log with labels "Praeda".
*/
public static String[] connect(String url) {
HttpClient httpclient = new DefaultHttpClient();
String[] str = new String[5];
// Prepare a request object
HttpGet httpget = new HttpGet(url);
// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httpget);
// Examine the response status
Log.d(TAG, response.getStatusLine().toString());
// Get hold of the response entity
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need
// to worry about connection release
if (entity != null) {
// A Simple JSON Response Read
InputStream instream = entity.getContent();
String result = convertStreamToString(instream);
Log.d(TAG, result);
// A Simple JSONObject Creation
JSONObject json = new JSONObject(result);
Log.d(TAG, "<jsonobject>\n" + json.toString()
+ "\n</jsonobject>");
// A Simple JSONObject Parsing
// JSONArray nameArray=json.names();
// Log.i("query",nameArray.toString());
// JSONObject query=json.getJSONObject("query");
// Log.i("query",query.toString());
// JSONArray results=query.getJSONArray("results");
// Log.i("rslts",results.toString());
// JSONArray quote=results.getJSONArray("quote");
// JSONObject quote=results.getJSONObject("quote");
// Log.i("quote",quote.toString());
JSONObject query = json.getJSONObject("query");
Log.d(TAG, query.toString());
JSONObject results = query.getJSONObject("results");
Log.d(TAG, results.toString());
JSONObject quote = results.getJSONObject("quote");
Log.d(TAG, quote.toString());
for (int i = 0; i < quote.length(); i++) {
// Log.i("Praedafor","<jsonname"+i+">\n"+nameArray.getString(i)+"\n</jsonname"+i+">\n"
// +"<jsonvalue"+i+">\n"+valArray.getString(i)+"\n</jsonvalue"+i+">");
// JSONObject quotes = results.getJSONObject(i)
// .getJSONObject("quote");
// Log,i
// Log.i("name",quote.getString("Name"));
// Log.i("name","pahunch");
// Log.i("name",quote.getString("Symbol"));
// Log.i("name",quote.getString("DaysLow"));
// Log.i("name",quote.getString("DaysHigh"));
// Log.i("name",quote.getString("Open"));
// Log.i("name",quote.getString("PreviousClose"));
String symbol = quote.getString("Symbol");
str[0] = symbol;
String dayslow = quote.getString("DaysLow");
str[1]=dayslow;
// tv1.setText(quote.getString("DaysLow"));
str[2]= quote.getString("DaysHigh");
str[3]= quote.getString("Open");
str[4]= quote.getString("Change");
}
// A Simple JSONObject Value Pushing
// json.put("execution-start-time", "sample value");
Log.d(TAG, "<jsonobject>\n" + json.toString()
+ "\n</jsonobject>");
// Log.i("Praeda12",json.get("").toString());
// Closing the input stream will trigger connection release
instream.close();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.getMessage();
}
return str;
}
`我叫它:
RestClient.connect("http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote");
我得到以下异常:
`09-07 00:00:26.675: W/System.err(469): java.net.UnknownHostException: finance.yahoo.com
09-07 00:00:26.755: W/System.err(469): at java.net.InetAddress.lookupHostByName(InetAddress.java:513)
09-07 00:00:26.755: W/System.err(469): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:278)
09-07 00:00:26.755: W/System.err(469): at java.net.InetAddress.getAllByName(InetAddress.java:242)
09-07 00:00:26.755: W/System.err(469): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
09-07 00:00:26.755: W/System.err(469): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-07 00:00:26.755: W/System.err(469): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-07 00:00:26.765: W/System.err(469): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
09-07 00:00:26.765: W/System.err(469): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
09-07 00:00:26.765: W/System.err(469): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-07 00:00:26.765: W/System.err(469): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
09-07 00:00:26.765: W/System.err(469): at RestClient.connect(RestClient.java:65)
09-07 00:00:26.765: W/System.err(469): at ExchangeUpdateService.buildUpdate(ExchangeUpdateService.java:43)
09-07 00:00:26.765: W/System.err(469): at ExchangeUpdateService.onStart(ExchangeUpdateService.java:31)
09-07 00:00:26.765: W/System.err(469): at android.app.Service.onStartCommand(Service.java:420)
09-07 00:00:26.765: W/System.err(469): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3059)
09-07 00:00:26.765: W/System.err(469): at android.app.ActivityThread.access$3600(ActivityThread.java:126)
09-07 00:00:26.765: W/System.err(469): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2101)
09-07 00:00:26.765: W/System.err(469): at android.os.Handler.dispatchMessage(Handler.java:99)
09-07 00:00:26.765: W/System.err(469): at android.os.Looper.loop(Looper.java:123)
09-07 00:00:26.765: W/System.err(469): at
android.app.ActivityThread.main(ActivityThread.java:4633)
09-07 00:00:26.765: W/System.err(469): at java.lang.reflect.Method.invokeNative(Native Method)
09-07 00:00:26.765: W/System.err(469): at java.lang.reflect.Method.invoke(Method.java:521)
09-07 00:00:26.765: W/System.err(469): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
09-07 00:00:26.765: W/System.err(469): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-07 00:00:26.765: W/System.err(469): at dalvik.system.NativeStart.main(Native Method)`
请帮忙。