如何删除java.io.IOException:流已关闭?
我试图通过API发送短信,但它显示了错误 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
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的所有调用