在Android中,可以使用HttpURLConnection來進行網絡請求。下面是一個簡單的示例,演示如何使用HttpURLConnection發送GET請求:
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 {
// 創建URL對象
URL url = new URL("http://example.com/api/data");
// 打開連接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 設置請求方法為GET
conn.setRequestMethod("GET");
// 設置連接超時時間
conn.setConnectTimeout(5000);
// 獲取服務器返回的輸入流
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
// 讀取服務器返回的數據
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
// 關閉輸入流和連接
reader.close();
conn.disconnect();
// 在主線程中更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
// 處理服務器返回的數據
String result = response.toString();
// 更新UI
textView.setText(result);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
上述代碼中,在run()方法中創建了一個URL對象,然后通過openConnection()方法打開連接。設置請求方法為GET,連接超時時間為5秒。通過getInputStream()方法獲取服務器返回的輸入流,并使用BufferedReader來讀取數據。最后在主線程中更新UI,處理服務器返回的數據。
需要注意的是,網絡請求不能在主線程中執行,否則會導致ANR(Application Not Responding)錯誤。所以我們使用了一個新的線程來執行網絡請求。