在Android中,处理HTTP异常通常涉及到捕获IOException
,这是当在进行网络操作时发生错误时抛出的异常。以下是一个简单的示例,展示了如何使用HttpURLConnection
来执行HTTP请求并处理可能的异常:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(new Runnable() { @Override public void run() { try { String url = "https://api.example.com/data"; URL obj = new URL(url); HttpURLConnection connection = (HttpURLConnection) obj.openConnection(); // 设置请求方法 connection.setRequestMethod("GET"); // 设置请求属性 connection.setRequestProperty("User-Agent", "Mozilla/5.0"); int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 输出结果 System.out.println(response.toString()); } else { System.out.println("GET request failed"); } } catch (IOException e) { // 处理异常 e.printStackTrace(); } } }).start(); } }
在这个示例中,我们创建了一个新的线程来执行HTTP请求,以避免阻塞主线程。我们使用HttpURLConnection
来执行GET请求,并检查响应代码。如果响应代码是HTTP_OK(200),我们读取响应内容并输出。如果发生异常,我们捕获IOException
并打印堆栈跟踪。
请注意,这个示例仅用于演示目的。在实际应用中,你可能需要使用更高级的库(如Retrofit或OkHttp)来处理HTTP请求和异常,因为它们提供了更好的性能和更简洁的API。同时,确保在后台线程中执行网络操作,以避免阻塞主线程。