如何删除java.io.IOException:流已关闭?

如何删除java.io.IOException:流已关闭?,java,android,Java,Android,我试图通过API发送短信,但它显示了错误 java.io.IOException:流已关闭 以下是我正在使用的代码: package com.pyprestaurants; import android.os.StrictMode; import android.util.Log; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import

我试图通过API发送短信,但它显示了错误 java.io.IOException:流已关闭 以下是我正在使用的代码:

package com.pyprestaurants;

import android.os.StrictMode;
import android.util.Log;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class SendMessage extends Thread {
    String message;
    String number;

    SendMessage(String message, String number){
        this.message = message;
        this.number = number;
    }

    @Override
    public void run() {
        try {
            // Construct data
            String apiKey = "apikey=" + "nZ0ZOkGeO3U-lkmMqZZuUgKmjjrpCf6v3WMoBV3jWG";
            String message = "&message=" + this.message;
            String sender = "&sender=" + "PYPRES";
            String numbers = "&numbers=" + this.number;

            // Send data
            HttpURLConnection conn = (HttpURLConnection) new 
            URL("https://api.textlocal.in/send/?").openConnection();
            String data = apiKey + numbers + message + sender;
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Length", Integer.toString(data.length()));
            conn.getOutputStream().write(data.getBytes(StandardCharsets.UTF_8));

            final BufferedReader rd = new BufferedReader(new 
            InputStreamReader(conn.getInputStream()));
            rd.close();
            String line;
            String msg="";
            while ((line = rd.readLine()) != null) {
                 msg = msg+line;
                 Log.d("TAG","the message is "+line);
            }
        } catch (Exception e) {
            Log.d("TAG- Error msg ",e+"");
        }
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
}
我想通过各种活动发送短信。因此,我创建了一个单独的类,它使用线程。每当我想发送消息时,我都会调用SendMessage类的函数(上面给出了该类的代码)。现在的问题是,在某些活动中,它正在发送消息,但在某些情况下,它显示了错误:

java.io.IOException:流已关闭

我非常困惑,为什么同一个代码可以运行一次,而另一次却显示错误。
如果有人知道是什么错误,请告诉我

在阅读输入流之前关闭它

        InputStreamReader(conn.getInputStream()));
        rd.close();
        String line;

我认为问题在于您在rd.close()之后调用rd.readLine();。 尝试将rd.close()方法向后移动,以便在关闭它之前完成对rd的所有调用