0

現在、いくつかのミドルウェアへの接続が確立されており、それを介して SQL クエリをデータベースに送信しています。

DataInputStream を使用可能な形式 (文字列であるかどうかにかかわらず) に変換する際に問題が発生しています。別の StackOverflow questionを見ましたが、使用して以来、これで問題は解決しませんでした

in.readLine();

それが何を意味するにせよ、「非推奨」です。ミドルウェアからの応答を読み取ることができる必要があります。

private class NetworkTask extends AsyncTask<String, Void, Integer> 
{
    protected Integer doInBackground(String... params)
    {
        Message message = networkHandler.obtainMessage();

        String ip = "example ip";
        int port = 1234;

        try 
        {
            InetAddress serverAddr = InetAddress.getByName(ip);
            Log.d("EventBooker", "C: Connecting...");
            Socket socket = new Socket(serverAddr, port);               

            DataInputStream in = new DataInputStream(socket.getInputStream());


            try 
            {
                Log.d("EventBooker", "C: Connected. Sending command.");
                PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
                out.println(params[0]);
                networkHandler.sendMessage(message);
                Log.d("EventBooker", "C: Sent.");
            } 
            catch (Exception e) 
            {
                Log.e("EventBooker", "S: Error", e);
            }
            Log.d("EventBooker", "C: Reading...");



            Log.d("EventBooker", "C: Response read, closing.");
            socket.close();
            Log.d("Eventbooker", "C: Closed.");
        } 
        catch (Exception e)
        {
            Log.e("EventBooker", "C: Error", e);
        }
        return 1;
    }
}
4

1 に答える 1

2

DataInputStreamを次のBufferedReaderStreamように変換します。

BufferedReader d = new BufferedReader(new InputStreamReader(in));

次に、実際のを取得したい場合String、これを行うには、次のようにします。

StringBuffer sb = new StringBuffer();
String s = "";

while((s = d.readLine()) != null) {
    sb.append(s);
}

String data = sb.toString();

//Use data for w/e

簡単でシンプル!

既存の文字列に単に追加しない理由は、Javaが不変であるため、オブジェクトが再作成Stringsされるたびにパフォーマンスの問題が発生するためです。Stringしたがって、StringBuffer

于 2013-04-13T14:36:31.243 に答える