2017-04-19 10 views
0

私はプロジェクトの株式市場データを収集しており、ここ数ヶ月間そうしています。しかし、数日前から、私がYahooからデータをダウンロードするために使ってきたURLConnectionは、変更を加えずに済み、それ以前に完全に機能していたにもかかわらず、nullになっています。 YahooからのURLは、私が読み込んでプリントアウトするcsvファイルをダウンロードします。URLは有効ですが、ブラウザに接続しても動作しますが、コードに接続するとURLConnectionはnullになります。他の株式を使ってみることも助けにはなりません。Java URLConnectionは有効なURLにnullを返します

private URL url = null; 
private URLConnection urlConn = null; 
private InputStreamReader inStream = null; 
try { 
     //http://ichart.finance.yahoo.com/table.csv?s=^FTSE&d=3&e=18&f=2017&g=d&a=1&b=14&c=2017 
     this.url = new URL(urlStr); 
        System.out.println(url.toString()); 
     this.urlConn = url.openConnection(); 
     this.urlConn.connect(); 

     //Start Reading 
     this.inStream = new InputStreamReader(this.urlConn.getInputStream()); 
     BufferedReader buff= new BufferedReader(this.inStream); 
     System.out.println(buff.readLine()); 
}catch (MalformedURLException e) { 
     System.out.println(e.getMessage()); 
}catch(IOException e){ 
     System.out.println(e.getMessage()); 
} 
+0

IOExceptionを例外に変更して、キャッチする例外がないかどうかを確認します。多分、403エラーです。 – Sedrick

+1

'URLConnection'は* not * nullです。 'readLine()'は*を返す*、または例外がスローされています。正確にしてください。 – EJP

答えて

2

curlを使用すると、URLがhttpsにリダイレクトされたことが示されます。

$ curl -v -H "Content-Type: text/csv" "http://ichart.finance.yahoo.com/table.csv?s=^FTSE&d=3&e=18&f=2017&g=d&a=1&b=14&c=2017" 
* Trying 98.139.199.204... 
* Connected to ichart.finance.yahoo.com (98.139.199.204) port 80 (#0) 
> GET /table.csv?s=^FTSE&d=3&e=18&f=2017&g=d&a=1&b=14&c=2017 HTTP/1.1 
> Host: ichart.finance.yahoo.com 
> User-Agent: curl/7.43.0 
> Accept: */* 
> Content-Type: text/csv 
> 
< HTTP/1.1 301 Moved Permanently 
< Date: Wed, 19 Apr 2017 02:48:29 GMT 
< Via: http/1.1 media-router68.prod.media.bf1.yahoo.com (ApacheTrafficServer [c s f ]), http/1.1 r23.ycpi.bf1.yahoo.net (ApacheTrafficServer [cMsSfW]) 
< Server: ATS 
< Location: https://ichart.finance.yahoo.com/table.csv?s=^FTSE&d=3&e=18&f=2017&g=d&a=1&b=14&c=2017 
< Content-Length: 0 
< Age: 0 
< Connection: keep-alive 
< 
* Connection #0 to host ichart.finance.yahoo.com left intact 

httpの代わりにhttpsを使用するようにURLを変更します。あなたのコード内のURLにhttpsを使用するように変更しました。それは私のために働いていました。

+1

これは問題を解決しました!とても簡単。どうもありがとう! – Fernando

+1

@フェルナンド:この回答が役に立ったら、それを受け入れてください –

関連する問題