- - PR -
HttpURLConnection関数を使ってますが
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-04-08 13:52
いつもお世話になっております。
インギさまの勧めで新しいスレッドに質問を書かせていただきます。 環境 Linux、tomcatです。 サーブレットで作業しています。 Excelファイルが存在するサーバーもLinuxです。 1.作りたいものは 別のサーバー(PC本体自体が別です。)に存在しているExcelファイルを読み込んでHTMLに表示したいです。 2.みなさんのおかげでやっと書いたソースです。^^ res.setContentType("application/vnd.ms-excel; charset=Shift_JIS"); out = res.getWriter(); URL url; HttpURLConnection urlConn; // URL の作成 url = new URL( address ); // コネクトして、HttpURLConnection の作成 urlConn = (HttpURLConnection)url.openConnection(); urlConn.setRequestMethod("GET"); BufferedInputStream bi = new BufferedInputStream(urlConn.getInputStream()); int i = bi.available(); byte[] buf = new byte[i]; bi.read(buf); out.println(new String(buf)); bi.close(); // ディスコネクトする urlConn.disconnect(); 3.問題点 ExcelがIEに開かれますが。。。 内容は化けます。 バイナリで読み込めばできるって話を聞いたんですが なかなかうまくいかず。。。 ヒントお願いします。(今までもいっぱいもらいましたが −−;) [ メッセージ編集済み 編集者: ミミ 編集日時 2004-04-08 13:54 ] [ メッセージ編集済み 編集者: ミミ 編集日時 2004-04-09 15:04 ] | ||||
|
投稿日時: 2004-04-08 14:11
Reader で読むのを止めたまではよいのですが、せっかく読み込んだバイナリデータを String に変換したり Writer に書いちゃ元も子もないですよ。
読んだままを OutputStream に書きましょう。 あと、自分でバッファリングするなら BufferedInputStream を使う意味はありません。 あと、自分でバッファリングするならバッファサイズは8192ぐらいに固定して、available()使うのは止めましょう。 あと、Content-Type に charset の指定は無意味でしょう。この場合。 ところで、
最近は Linux でも IIS が動くんですか? | ||||
|
投稿日時: 2004-04-08 14:11
1・レスポンスのcontent-typeの設定でResponse#setContentTypeを使う
2・HttpServletResponse#getOutputStreamでストリームを取得し ServletOutputStream#writeで、 HttpURLConnectionのストリームを書き出す で、OKだと思うのですが。 | ||||
|
投稿日時: 2004-04-08 14:19
返答ありがとうござします。
佐々木様:最近は Linux でも IIS が動くんですか? 上司の話ではそうでしたけど。。。 今テスト環境ではIISではありませんが本番サーバーはIISって言ってました。 できました。 本当に有難うございました。 みなさんのおかげです。 これからも頑張ります。^^ [ メッセージ編集済み 編集者: ミミ 編集日時 2004-04-08 14:32 ] | ||||
|
投稿日時: 2004-04-08 16:36
絶対無理です。 Microsoft製品で、Linuxで動くものなんて・・・ もしかしたら、本番は「別のサーバ」がWindowsだったりして | ||||
|
投稿日時: 2004-04-08 17:41
Cluster様
引用: 絶対無理です。 Microsoft製品で、Linuxで動くものなんて・・・ もしかしたら、本番は「別のサーバ」がWindowsだったりして かもしれません。 いつも上司は適当に言ってるので。。。T.T 結局、絶対無理ですね。 勉強になりました。 ありがとうございます。 ちなみに 1・レスポンスのcontent-typeの設定でResponse#setContentTypeを使う 2・HttpServletResponse#getOutputStreamでストリームを取得し ServletOutputStream#writeで、 HttpURLConnectionのストリームを書き出す って結構不安定です。 みなさんはそうでもないですか?私だけ? できたりできなかったりします。 500エラーが出たりして。。。 T.T | ||||
|
投稿日時: 2004-04-08 18:09
[Excelファイル(別のPC在)をHTMLページに表示したいですが ]とはまた内容が異なっているようです。
また新しいスレッドをたててはいかがでしょうか。 あと、どんなエラーがでるのか情報を書いた方が良いでしょう。500エラーといってもサーバサイドではなんらかの例外・エラーが出力されているはずですから。 | ||||
1
