gpt4 book ai didi

java - URL 连接超时后导致应用程序崩溃

转载 作者:行者123 更新时间:2023-12-01 12:33:01 24 4
gpt4 key购买 nike

我正在开发一个Android应用程序,其中XML请求被发送到服务器,并且获得的响应在应用程序中用于进一步处理。问题是,如果服务器未运行,应用程序会在请求超时后崩溃。我想向 Toast 展示“服务器未运行”的错误。有人可以帮忙吗?

            try{
URL url = new URL(server_URL);

URLConnection conn=url.openConnection();
conn.setConnectTimeout(5000);


conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(
"xxxxxxxxxxxxxxxxxx XML REQUEST xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
);
wr.flush();


BufferedReader reader;
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;


while((line = reader.readLine()) != null)
{
// Append server response in string
sb.append(line + "\n");
}


data = sb.toString();


reader.close();

} catch(IOException ex)
{

Toast.makeText(c, "Error: "+ex.getMessage(), Toast.LENGTH_LONG).show();

}

最佳答案

这肯定是因为您正在主线程上运行网络请求或操作。您使用的是子线程还是异步任务?

网络操作通常使用异步任务或通过子线程完成。

尝试这样做:

  AsyncTask<Void, Void, Void> aTask = new AsyncTask<Void,Void,Void>()
{
@Override
protected void onPreExecute()
{
//task to run before main network operations start
}
@Override
protected void doInBackground(Void ... s )
{
//all the operations to perform should go here
}

@Override
protected void onPostExecute()
{
//called when operations have finished and the onBackgroun
}
}

此方法用于使用异步任务运行基于网络的操作。doInBackground 方法中不允许使用 Toast。由于这是一个后台任务,因此不允许它干扰主 UI 上下文,因为这可能会导致它挂接并阻碍 UI,甚至使其崩溃。

关于java - URL 连接超时后导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25793223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com