在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。同時,確保在后臺線程中執行網絡操作,以避免阻塞主線程。