2012-09-06 4 views
0

새로운 응용 프로그램을 만들려고하고 있으며 주식 업데이트, 환율 교환 등을하고 싶습니다. 이미 Google Finance API를 사용해 보았습니다. 사용하지 않는 이유 : 더 이상 사용되지 않으며 곧 마감되어 내 응용 프로그램이 쓸모 없게됩니다.Yahoo Finance and Android

그런 다음 Yahoo Finance로 이전하여 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; 
} 

` : 나는 gettnig 예외 다음입니다

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)` 

이 도와주세요

여기 내 코드입니다.

답변

0

이 두 가지 문제 매니페스트 파일에 언급되지 않은

  1. Internet permission

    이 있었다 밝혀 지.
  2. 전달 된 URL이 잘못되었습니다.
    그것은 있었어야 :

"http://query.yahooapis.com/v1/public/yql?q=select%20rate%2Cname%20from%20csv%20where%20url%3D'http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes%3Fs%3D" + from + to + "%253DX%26f%3Dl1n'%20and%20columns%3D'rate%2Cname'&format=json&callback=parseExchangeRate"

1

로그의 첫 번째 줄은 매우 명확한 대답을 제공합니다 ... 09-07 00:00:26.675: W/System.err(469): java.net.UnknownHostException: finance.yahoo.com. 어떤 이유로 finance.yahoo.com을 해결할 수 없습니다.

가장 큰 문제는 네트워크 연결입니다. 이 로그를 기반으로 한 이유가 애플리케이션 문제인지 의심 할 필요는 없습니다.

+0

네트워크 연결이 괜찮습니다. 내 장치에서 실행 중이며 네트워크 연결이 작동 중입니다. – harshit