2011-03-20 19 views
1

こんにちは私はhttp://download.finance.yahoo.com/d/quotes.csv?s=msft&f=sl1p2からCSVをダウンロードしようとしており、その後データを解析しようとしています。以下にコードを示します。現在、トーストのhtmlヘッダーだけが返されています。 csvの実際の結果が返されない理由は何ですか?間違ったcsvを返すHttpClient?

Stock stock = new Stock(); 
    try { 

     //need to call yahoo api and get csv -> parse csv for most recent price and price change 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpContext localContext = new BasicHttpContext(); 
     HttpGet httpGet = new HttpGet(uri); 
     HttpResponse response = httpClient.execute(httpGet, localContext); 
     String result = ""; 

     BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

     String line = ""; 
     while ((line = reader.readLine()) != null){ 

       result += line + "\n"; 
       String[] RowData = result.split("\n"); 
       Toast.makeText(this, result, Toast.LENGTH_LONG).show(); 
       String name = RowData[0]; 
       String price = RowData[1]; 
       String change = RowData[2]; 

       stock.setPrice(Double.parseDouble(price)); 
       stock.setTicker(name); 
       stock.setChange(change); 


      } 

答えて

3

改行ではなくカンマでsplitにする必要はありませんか?

String[] RowData = result.split(","); 

Iは、上記を使用してコードを実行し、

System.out.println("result = "+ result); 

とトーストを交換する場合、私が取得:

result = "MSFT",24.80,"+0.08%" 

namepricechangeの値が正常に取り込まれ。私はヘッダー行を一切見ません。

Javaの規約では、変数名は小文字で始まるため、rowDataRowDataではありません。

+0

はい、これが解決策であることを見たいと思います。それも考え出した:)。また、引用符を取り除くためにreplaceAllを使用する必要がありました。 – locoboy

0
http://download.finance.yahoo.com/d/quotes.csv?s=msft&f=sl1p2 

あなたが提供しているURLは二つの引数含まれる:

1: s=msft 
    -this is the yahoo finance api code for microsoft 

2: f=sl1p2 
    - this contains 3 sub-parameters 
    - s [it is the company name] 
    - l1 [it is the company's last quote price] 
    - p2 [it is the price change] 

だから私はあなたが取得しているCSVが正しいことを推測します。

+0

はい私はどこが間違っているのか正確にはわかりません。 – locoboy

+1

私は同じもののPHPコードスニペットを持っています。あなたがしたい場合は、私はあなたとそれを共有することができます。 –

+0

確かに私はそれが – locoboy

0
<?php 

function getStockSite($stockLink){ 

    if ($fp = fopen($stockLink, 'r')) { 
     $content = ''; 

     while ($line = fread($fp, 1024)) { 
     $content .= $line; 
     } 
    } 

    return $content; 
} 

?> 

<table cellpadding="0" style="width:700px;" cellspacing="0"> 

<tr> 
<th>Country</th> 
<th>Indices</th> 
<th>Date</th> 
<th>Price</th> 
<th>Prev. Price</th> 
<th>High</th> 
<th>Low</th> 
<th>Change</th> 
</tr> 


<?php 

$url="http://finance.yahoo.com/d/quotes.csv?s=^BSESN&f=d1p5phgc6"; 
try 
{ 
$data = getStockSite($url); 
$bse=explode(",",$data); 
} 
catch(exception $e) 
{ 
} 
?> 

<tr> 
<td>INDIA</td> 
<td>SENSEX</td> 
<td><?php echo $bse[0];?></td> 
<td><?php echo $bse[1];?></td> 
<td><?php echo $bse[2];?></td> 
<td><?php echo $bse[3];?></td> 
<td><?php echo $bse[4];?></td> 
<td><?php echo $bse[5];?></td> 
<tr> 


</table> 
関連する問題