質問編集履歴

2 編集

eisaku123

eisaku123 score 53

2018/03/03 18:32  投稿

BufferedReader readerに読み込めれない。
いつもお世話になります。
下図のように3行追加するとBufferedReader readerに読み込むことができなくなくなります。
disconnect()にしてもうまくいかないです。
何が問題あるのでしょう?
```java
//①クライント側 アンドロイドアプリ
@Override
   protected Result doInBackground(Void... voids) {
       Result result = new Result();
       byte[] data;
       result.bitmap = null;
       result.text=null;
       InputStream inputStream = null;
       StringBuilder builder = new StringBuilder();
       try {
           URL url = new URL("http://192.168.3.5:8080/book123/chapter14/search");
           HttpURLConnection con = (HttpURLConnection)url.openConnection();
           
           //↓↓↓↓↓↓↓↓↓ここ3行追加すると BufferedReader readerに読み込めない
           con.connect();
           inputStream = con.getInputStream();
           result.bitmap = BitmapFactory.decodeStream(inputStream);
       //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑         
       //↓↓↓↓↓↓読み込めれない
           BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
           String line;
           while ((line = reader.readLine()) != null){
               builder.append(line);
           }
           result.text = builder.toString();
       }catch (IOException exception){
       }
       return result;
   }
   @Override
   protected void onPostExecute(Result result) {
       
       imageview.setImageBitmap(result.bitmap);
       textView.setText(result.text);
       
   }
}
```
```java
//②サーバー側
public class Hello extends HttpServlet{
   @Override
   public void doGet(
           HttpServletRequest request,
           HttpServletResponse response
       ) throws ServletException, IOException {
   try {
         response.setContentType("application/octet-stream ;charset=UTF-8");
         response.setHeader("Content-Disposition" ,"attachment");
         OutputStream out = response.getOutputStream();//画像側のストリーム<===getOutputStream()はこのレスポンスに対して既に呼び出されています
         OutputStream out = response.getOutputStream();//画像側のストリーム<===エラー:getOutputStream()はこのレスポンスに対して既に呼び出されています
         //////テキスト////////start/////////////////////////////////
         PrintWriter out2=response.getWriter();//テキスト側のストリーム
         out2.println("こんにちは777777");
         //////テキスト////////end/////////////////////////////////
        //////画像側////////start/////////////////////////////////
         FileInputStream input =new FileInputStream("/Applications/Eclipse_4.7.2.app/Contents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/book777/WEB-INF/classes/chapter3/1.jpg");
     
           int i = input.read();
           while(i !=-1) {
               char c = (char)i;
               out.write(c); //ここでバイナリーデータを流している
               i = input.read();
           }
           input.close();
           out.close();
        //////画像側////////end/////////////////////////////////
         }catch(Exception e) {
             System.out.println("意味不明のエラーです");
             System.out.println(e);
         }catch (Throwable e) {
             System.out.println("byte[] data = IOUtils.toByteArray(input);でエラーです");
         }
         //out.close();
   }
}
```
  • Java

    20612 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    8997 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    5594 questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

1 編集

eisaku123

eisaku123 score 53

2018/03/03 18:30  投稿

BufferedReader readerに読み込めれない。
いつもお世話になります。
下図のように3行追加するとBufferedReader readerに読み込むことができなくなくなります。
disconnect()にしてもうまくいかないです。
何が問題あるのでしょう?
```java
//①クライント側 アンドロイドアプリ  
@Override
   protected Result doInBackground(Void... voids) {
       Result result = new Result();
       byte[] data;
       result.bitmap = null;
       result.text=null;
       InputStream inputStream = null;
       StringBuilder builder = new StringBuilder();
       try {
           URL url = new URL("http://192.168.3.5:8080/book123/chapter14/search");
           HttpURLConnection con = (HttpURLConnection)url.openConnection();
           
           //↓↓↓↓↓↓↓↓↓ここ3行追加すると BufferedReader readerに読み込めない
           con.connect();
           inputStream = con.getInputStream();
           result.bitmap = BitmapFactory.decodeStream(inputStream);
       //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑         
       //↓↓↓↓↓↓読み込めれない
           BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
           String line;
           while ((line = reader.readLine()) != null){
               builder.append(line);
           }
           result.text = builder.toString();
       }catch (IOException exception){
       }
       return result;
   }
   @Override
   protected void onPostExecute(Result result) {
       
       imageview.setImageBitmap(result.bitmap);
       textView.setText(result.text);
       
   }
}
```  
 
```java  
//②サーバー側  
public class Hello extends HttpServlet{  
 
   @Override  
   public void doGet(  
           HttpServletRequest request,  
           HttpServletResponse response  
       ) throws ServletException, IOException {  
 
   try {  
         response.setContentType("application/octet-stream ;charset=UTF-8");  
         response.setHeader("Content-Disposition" ,"attachment");  
 
         OutputStream out = response.getOutputStream();//画像側のストリーム<===getOutputStream()はこのレスポンスに対して既に呼び出されています  
 
         //////テキスト////////start/////////////////////////////////  
         PrintWriter out2=response.getWriter();//テキスト側のストリーム  
         out2.println("こんにちは777777");  
         //////テキスト////////end/////////////////////////////////  
 
 
        //////画像側////////start/////////////////////////////////  
         FileInputStream input =new FileInputStream("/Applications/Eclipse_4.7.2.app/Contents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/book777/WEB-INF/classes/chapter3/1.jpg");  
       
           int i = input.read();  
           while(i !=-1) {  
               char c = (char)i;  
               out.write(c); //ここでバイナリーデータを流している  
               i = input.read();  
           }  
           input.close();  
           out.close();  
 
        //////画像側////////end/////////////////////////////////  
 
         }catch(Exception e) {  
             System.out.println("意味不明のエラーです");  
             System.out.println(e);  
         }catch (Throwable e) {  
             System.out.println("byte[] data = IOUtils.toByteArray(input);でエラーです");  
         }  
 
         //out.close();  
   }  
 
}  
```
  • Java

    20612 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    8997 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    5594 questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る